使用 Pynsist 和 PyQt 构建的 GUI:导入错误 'sip'

GUI Built with Pynsist and PyQt: Import Error 'sip'

我已经使用 PyQt5 构建了一个 GUI,并希望通过使用 pynsist 将其打包到没有安装 Python 的其他计算机上。不幸的是,当启动安装程序生成的快捷方式时,GUI 没有按预期打开并且 Python 不断崩溃(即使安装了 Python)。

控制台在崩溃时显示以下错误:

ModuleNotFoundError: No module named 'sip'.

这是由于 from PyQt5.QtCore import *

不幸的是,在安装了 Python 的计算机上启动 .launch.py 脚本时,一切正常。我想这是因为它随后以安装的版本为目标,而不是 GUI 构建中包含的版本。 但是,快捷方式不起作用,无论是否安装 Python,都会出现上述错误。

关于如何解决此问题并使快捷方式在未安装 Python 的计算机上起作用的任何想法?

提前致谢!

当我第一次遇到这个问题时,我只是将 sip.pyd 添加到我的 project-folder。您可以在以下位置找到它:

x:/path-to-python/Lib/site-packages/sip.pyd

但真正解决我问题的是using pyinstaller。 它会自动检测大多数依赖项,并且大部分时间无需复杂的配置即可运行。

pip install pyinstaller
pyinstaller main.py 
# done

Sip 是 separate package which PyQt5 requires. You can include it with your application by listing it in pypi_wheels=, as in the PyQt5 example:

[Include]
packages=listapp
pypi_wheels= PyQt5==5.6
    sip==4.18

如果您使用的是最新版本的 PyQt5 (5.10.1),那么最新版本的 sip (4.19.8) 应该可以使用它。