如何制作含Qt库的自制编译版PyQt5 wheel包
嘿,我来一步步教你制作包含Qt库的PyQt5 5.14.1 wheel包,你已经添加了qmediastreamscontrols.sip,接下来跟着这些步骤来就行:
第一步:搭好编译环境
首先得确保你的工具链都到位:
- 先升级Python的打包工具:
pip install --upgrade pip setuptools wheel - 安装和PyQt5.14.1匹配的sip版本(这个版本还在用sip v4,别装成v5了):
pip install sip==4.19.21 - 准备好Qt 5.14.1的完整环境(不管是预编译版还是自己编译的都行,关键是要能找到
qmake工具)
第二步:配置PyQt5编译参数
先解压你下载的PyQt5-5.14.1.tar.gz,进入解压后的目录:
tar -xzf PyQt5-5.14.1.tar.gz cd PyQt5-5.14.1
然后运行配置脚本,核心是指定Qt的qmake路径,同时开启wheel生成:
# 替换成你自己的Qt 5.14.1的qmake路径 python configure.py --qmake /path/to/qt5.14.1/bin/qmake --enable-wheel
注意:如果你的sip不在系统默认路径里,加上
--sip /path/to/sip参数指定路径就行。
第三步:编译PyQt5
接下来就是编译环节,不同系统用的命令不一样:
- Linux/Mac:
make -j$(nproc) # -j后面跟CPU核心数,加快编译速度 - Windows(用MSVC编译器的话):
nmake # 或者用jom,速度更快
第四步:打包包含Qt库的wheel
默认生成的wheel不会自动包含Qt的动态库,所以得手动处理一下,再重新打包:
- 复制Qt依赖库:找到Qt 5.14.1的库目录,把PyQt5用到的动态库(比如Qt5Core、Qt5Gui、Qt5Multimedia这些,还有对应的插件目录,比如platforms、multimedia)复制到编译后的
PyQt5模块目录里(一般在build/lib.*路径下)。 - 修复wheel(可选但推荐):
- Linux:用
auditwheel把依赖库打包进去,生成兼容manylinux的wheel:pip install auditwheel auditwheel repair dist/PyQt5-5.14.1-*.whl - Windows:用
delvewheel处理依赖:pip install delvewheel delvewheel repair dist/PyQt5-5.14.1-*.whl - Mac:可以用
delvewheel或者手动调整framework路径,确保库能被正确加载。
- Linux:用
如果不想用工具,也可以直接在编译完成后运行python setup.py bdist_wheel,前提是已经把Qt库复制到了正确的位置,这样打包时会自动包含这些文件。
第五步:验证wheel包
安装你生成的wheel,然后跑个简单的测试程序看看能不能正常运行:
import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtMultimedia import QMediaPlayer app = QApplication(sys.argv) window = QWidget() player = QMediaPlayer() window.show() sys.exit(app.exec_())
如果程序能正常弹出窗口,说明你的wheel已经包含了必要的Qt库,没问题啦!
内容的提问来源于stack exchange,提问作者Newtron Malayalam




