Câu trả lời này không chỉ bao gồm cài đặt cho Linux mà còn cho hệ điều hành khác, bên cạnh đó nó cũng áp dụng cho pyqt5
Các mã nhị phân được Qt sử dụng giống với các mã được PyQt5 / PySide2 sử dụng vì chúng sử dụng cùng một mã cơ sở nên bạn sẽ phải biên dịch các plugin.
Trong trường hợp này, để biên dịch plugin mysql, bạn phải làm theo hướng dẫn chính thức , tóm lại là:
- Cài đặt các phần phụ thuộc, trong trường hợp này là mysql-connector-c
- Cài đặt Qt của cùng một phiên bản mà pyqt5 / pyside2 đã được biên dịch và các công cụ phát triển như MSVC trên windows, build-Essentials trên Ubuntu, XCode trên MacOS, v.v.
- Tải xuống mã nguồn, trong trường hợp này là kho qtbase .
- Biên dịch plugin.
Để tìm ra phiên bản Qt với phiên bản mà thư viện được biên dịch, có thể sử dụng cách sau:
- 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())"
Ở trên tạo libqsqlmysql.so, qsqlmysql.dll hoặc libqsqlmysql.dylib tùy thuộc vào hệ điều hành. Tệp đó phải được dán vào đường dẫn:
- 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'))"
Để đề cập đến tất cả các trường hợp, tôi đã tạo Hành động trên Github để tạo các tệp nhị phân:
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 }}
Mã trước đó tạo plugin mà bạn có thể tìm thấy tại đây .
Trong trường hợp cụ thể của Ubuntu, nó có thể được giảm xuống:
- Sao chép libqsqlmysql.so gửi tới QT_SQL_DRIVER_PATH.
- Thực thi
sudo apt install libmysqlclient-dev
Trong trường hợp cụ thể của Windows, nó có thể được giảm xuống:
- Sao chép qsqlmysql.dll gửi tới QT_SQL_DRIVER_PATH.
- Tải xuống mysql-connector-c dành cho windows và sao chép libmysql.dll bên cạnh tập lệnh của bạn.