You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何制作含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的动态库,所以得手动处理一下,再重新打包:

  1. 复制Qt依赖库:找到Qt 5.14.1的库目录,把PyQt5用到的动态库(比如Qt5Core、Qt5Gui、Qt5Multimedia这些,还有对应的插件目录,比如platforms、multimedia)复制到编译后的PyQt5模块目录里(一般在build/lib.*路径下)。
  2. 修复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路径,确保库能被正确加载。

如果不想用工具,也可以直接在编译完成后运行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

火山引擎 最新活动