WxPython:PyInstaller失败,没有名为_core_的模块
问题内容:
我正在使用PyInstaller将wxpython(3.0.2.0)应用程序转换为二进制文件。在Ubuntu
12.04上构建和执行二进制文件时,它们工作正常。但是,如果我在Ubuntu
14.04上构建,则会收到以下错误。(当我直接启动python脚本即python my_application.py时,即使在Ubuntu
14.04中,该应用程序也可以工作)。知道使用PyInstaller打包应用程序时可能缺少什么吗?
$ ./my_application
Traceback (most recent call last):
File "<string>", line 22, in <module>
File "/usr/local/lib/python2.7/dist-packages/PyInstaller/loader/pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "/local/workspace/my_application/out00-PYZ.pyz/wx", line 45, in <module>
File "/usr/local/lib/python2.7/dist-packages/PyInstaller/loader/pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
File "/local/workspace/my_application/out00-PYZ.pyz/wx._core", line 4, in <module>
**ImportError: No module named _core_**
我的PyInstaller规格文件如下所示:
...
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.scripts,
exclude_binaries=True,
name='my_application',
debug=False,
onefile = True,
strip=None,
upx=True,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=None,
upx=True,
name='my_application')
问题答案:
从根本上讲,问题出在PyInstaller版本上-您需要使用该develop
版本。已发现此问题,并记录在PyInstaller
Github问题上
。
要安装最新版本并进行纠正-在命令提示符下键入:
$ pip install git+https://github.com/pyinstaller/pyinstaller
这将直接从github(此分支位于github上)安装最新版本的pyinstaller
。直到最近,PyInstaller都有一个单独的python3
分支,但已被合并回该develop
分支。如果需要使用Python
3.x,则需要此分支-通过附加@develop
到pip install
命令来获取此信息)
上面的方法取决于您已经git
在系统上安装了pyinstaller代码(我想现在对于开发人员来说很可能)。如果没有,您可以
- 使用安装git
apt-get install git
(您可能需要这样做sudo
) - 下载pyinstaller-develop zip文件(在此处)并手动安装。请注意,根据截至2014年10月的Wiki,此版本应支持2.7和3.x。
就个人而言-我更喜欢选项1,因为这样可以避免您自己从压缩的源代码树进行构建的所有潜在问题。
测验
我使用来自wxPython网页的简单“ Hello
world”应用程序在Ubuntu
14.04、64位,wxpython 3.0.2.0和python
2.7.6上对此进行了测试。在安装pyinstaller开发版本之前,OP的问题已完全复制。安装开发版本后,该应用程序将正确构建并作为可执行文件运行。
文档 使用PIP用git的-
https://pip.pypa.io/en/latest/reference/pip_install.html#git
从您的问题尚不清楚,您在Ubuntu
12.04安装上使用的是哪个版本的PyInstaller,而不是14.04版本。您在12.04上拥有的版本似乎与在14.04上安装的标准版本没有相同的问题。