You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Cython编译Python代码后,PyInstaller打包出现依赖缺失问题

解决PyInstaller打包Cython编译模块时缺失依赖的问题

问题原因

PyInstaller的代码分析阶段仅能解析Python源码文件,无法读取Cython编译后的.so(或Windows平台的.pyd)二进制模块中的导入语句,导致这类模块依赖的第三方库(比如tomllib)不会被自动打包进可执行文件。

解决方案

1. 修改PyInstaller spec文件添加隐式依赖

打开你的main.spec文件,找到Analysis配置段,在hiddenimports列表中加入缺失的依赖模块:

a = Analysis(
    ['main.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=['tomllib'],  # 在此添加需要打包的依赖
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
)

之后通过spec文件重新打包:

pyinstaller main.spec

2. 主入口文件手动导入依赖

在main.py开头显式导入缺失的模块(即使代码中没有直接使用),让PyInstaller的分析器能检测到并打包:

import sys
import tomllib  # 手动添加此行导入
from PySide6.QtWidgets import QApplication
from main_window import MainWindow

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWin = MainWindow()
    mainWin.show()
    sys.exit(app.exec_())

完成修改后重新执行打包命令即可。

3. 打包时通过命令行参数指定隐式依赖

如果不想修改源码或spec文件,可直接在打包命令中用--hidden-import参数指定缺失模块:

pyinstaller --hidden-import tomllib main.py

内容的提问来源于stack exchange,提问作者sebwr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 08:42:38