首页 > 解决方案 > 使用 cx_freeze 6.6 构建时,PySide2 不会导入

问题描述

我有一个使用 cx_freeze 6.2 构建的程序。在我们添加 GUI 之前,它一直运行良好,然后在构建 EXE 后我们开始收到 ImportErrors。

...
File "C:\Users\Engineer\anaconda3\lib\site-packages\PySide2\__init__.py", line 88, in <module>
File "C:\Users\Engineer\anaconda3\lib\site-packages\PySide2\__init__.py", line 54, in _setupQtDirectories
File "C:\Users\Engineer\anaconda3\lib\site-packages\shiboken2\__init__.py", line 27, in <module>
ImportError: DLL load failed: The specified module could not be found.
...

我一直在寻找解决方案。不幸的是,我发现的唯一一个是“使用 Python 3.6 和 cx_freeze 5.1.1”,但这对我来说不是一个选项,因为我们有一个静态环境,并且需要付出很多努力才能获得批准来更改 python 的版本。(较小的包裹可能有更多的运气)

我已经尝试过新版本的 cx_freeze (6.6) 但仍然没有运气。

当前配置:Python 3.7.6 PySide 5.15.0 shiboken2 5.15.0

有没有人能够找到解决方案,一些构建脚本黑客或不涉及重新安装不同版本的 Python 的东西?

标签: pythoncx-freezepyside2shiboken2

解决方案


您缺少在代码导入时shiboken2.pyd出现的文件:site-packages\shiboken2\shiboken2.pyd

shiboken2\__init__.py line 27:
from .shiboken2 import *

我不太了解,cx_freeze但根据他们的文档,您
应该使用类似命令--packages=shiboken2或其他命令来包含子模块?


推荐阅读