この回答は、Linuxのインストールだけでなく、他のOSのインストールにも当てはまりますが、pyqt5にも適用されます
Qtで使用されるバイナリは、同じベースコードを使用するため、プラグインをコンパイルする必要があるため、PyQt5/PySide2で使用されるものと同じです。
この場合、mysqlプラグインをコンパイルするには、公式マニュアルに従う必要があります。 、要約すると:
- 依存関係をインストールします。この場合は、mysql-connector-c をインストールします。
- pyqt5 / pyside2がコンパイルされたのと同じバージョンのQtと、Windows上のMSVC、Ubuntuのビルドエッセンシャル、MacOSのXCodeなどの開発ツールをインストールします。
- ソースコードをダウンロードします。この場合は、qtbaseリポジトリ をダウンロードします。 。
- プラグインをコンパイルします。
ライブラリがコンパイルされたバージョンのQtのバージョンを確認するには、以下を使用できます。
- PyQt5
python -c "from PyQt5.QtCore import QT_VERSION_STR; print('Qt version', QT_VERSION_STR)"
- PySide2
python -c "from PySide2.QtCore import qVersion; print('Qt version', qVersion())"
上記は、OSに応じてlibqsqlmysql.so、qsqlmysql.dll、またはlibqsqlmysql.dylibを生成します。そのファイルはパスに貼り付ける必要があります:
- PyQt5:
python -c "import os; from PyQt5.QtCore import QLibraryInfo; print('QT_SQL_DRIVER_PATH', os.path.join(QLibraryInfo.location(QLibraryInfo.PrefixPath), 'plugins', 'sqldrivers'))"
- PySide2:
python -c "import os; from PySide2.QtCore import QLibraryInfo; print('QT_SQL_DRIVER_PATH', os.path.join(QLibraryInfo.location(QLibraryInfo.PrefixPath), 'plugins', 'sqldrivers'))"
すべてのケースをカバーするために、バイナリを生成するGithubアクションを作成しました:
name: generate_mysql_plugin
on: [push]
jobs:
ci:
name: ${{ matrix.os.name }} Qt-${{ matrix.qt.qt_version }}
runs-on: ${{ matrix.os.runs-on }}
strategy:
fail-fast: false
matrix:
os:
- name: Windows
extension: "dll"
runs-on: windows-2019
- name: Linux
extension: "so"
runs-on: ubuntu-20.04
- name: MacOS
extension: "dylib"
runs-on: macos-10.15
qt:
- name: 5.15
qt_version: 5.15.0
steps:
- name: Checkout
uses: actions/[email protected]
- name: Install Qt
uses: jurplel/[email protected]
with:
version: ${{ matrix.qt.qt_version }}
dir: ${{ github.workspace }}/qt/
- name: clone qtbase
run: git clone -b ${{ matrix.qt.qt_version }} https://code.qt.io/qt/qtbase.git
- name: Compile mysql plugin on Windows
if: matrix.os.name == 'Windows'
shell: cmd
run: |
choco install wget
wget https://downloads.mysql.com/archives/get/p/19/file/mysql-connector-c-6.1.11-winx64.zip
unzip mysql-connector-c-6.1.11-winx64.zip
copy /y "mysql-connector-c-6.1.11-winx64\lib\libmysql.dll" .
call "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat"
cd qtbase/src/plugins/sqldrivers
qmake -- MYSQL_INCDIR="${{ github.workspace }}\mysql-connector-c-6.1.11-winx64\include" MYSQL_LIBDIR="${{ github.workspace }}\mysql-connector-c-6.1.11-winx64\lib"
nmake sub-mysql
nmake install
- name: Compile mysql plugin on Linux
if: matrix.os.name == 'Linux'
run: |
wget https://downloads.mysql.com/archives/get/p/19/file/mysql-connector-c-6.1.11-linux-glibc2.12-x86_64.tar.gz
tar zxvf mysql-connector-c-6.1.11-linux-glibc2.12-x86_64.tar.gz
sudo cp mysql-connector-c-6.1.11-linux-glibc2.12-x86_64/lib/*.so /usr/lib/x86_64-linux-gnu
sudo apt-get install freetds-dev
cd qtbase/src/plugins/sqldrivers
qmake
cd mysql
qmake
make
make install
- name: Compile mysql plugin on MacOS
if: matrix.os.name == 'MacOs'
run: |
brew install wget
wget https://cdn.mysql.com/archives/mysql-connector-c/mysql-connector-c-6.1.11-macos10.12-x86_64.tar.gz
tar zxvf mysql-connector-c-6.1.11-macos10.12-x86_64.tar.gz
sudo cp mysql-connector-c-6.1.11-macos10.12-x86_64/lib/libmysqlclient.dylib mysql-connector-c-6.1.11-macos10.12-x86_64/lib/libmysqlclient_r.dylib
sudo cp mysql-connector-c-6.1.11-macos10.12-x86_64/lib/libmysqlclient.18.dylib mysql-connector-c-6.1.11-macos10.12-x86_64/lib/libmysqlclient_r.18.dylib
sudo cp mysql-connector-c-6.1.11-macos10.12-x86_64/lib/*.dylib /usr/local/lib
cd qtbase/src/plugins/sqldrivers
qmake -- MYSQL_PREFIX="${{ github.workspace }}/mysql-connector-c-6.1.11-macos10.12-x86_64"
make sub-mysql
cd mysql
make install
- name: upload
uses: actions/[email protected]
with:
path: qtbase/src/plugins/sqldrivers/plugins/sqldrivers/*qsqlmysql.${{ matrix.os.extension }}
name: mysqlplugin-${{ matrix.os.name }}-Qt${{ matrix.qt.name }}
前のコードは、
Ubuntuの特定のケースでは、次のように減らすことができます。
- libqsqlmysql.so をコピーします ファイルをQT_SQL_DRIVER_PATHに追加します。
-
sudo apt install libmysqlclient-dev
を実行します
Windowsの特定のケースでは、次のように減らすことができます。
- qsqlmysql.dll をコピーします ファイルをQT_SQL_DRIVER_PATHに追加します。
- Windows用のmysql-connector-c スクリプトの横にlibmysql.dllをコピーします。