Python PyInstaller创建的exc.不在带有ubuntu的virtualbox上运行
我使用PyInstaller从我使用以下命令编写的GUI脚本(使用wx.python)创建了一个可执行文件Python PyInstaller创建的exc.不在带有ubuntu的virtualbox上运行,python,virtualbox,pyinstaller,Python,Virtualbox,Pyinstaller,我使用PyInstaller从我使用以下命令编写的GUI脚本(使用wx.python)创建了一个可执行文件 python /home/torosean/pyinstaller/pyinstaller.py -F -w My_GUI_login_simplified.py 我可以在主机上运行该可执行文件,而不存在任何问题,方法是将cd放入dist文件夹并运行 ./My_GUI_login_simplified 现在,当我在ubuntu中测试可执行文件(使用虚拟盒)时,我得到如下所示的错
python /home/torosean/pyinstaller/pyinstaller.py -F -w My_GUI_login_simplified.py
我可以在主机上运行该可执行文件,而不存在任何问题,方法是将cd放入dist文件夹并运行
./My_GUI_login_simplified
现在,当我在ubuntu中测试可执行文件(使用虚拟盒)时,我得到如下所示的错误。我想先在几个操作系统上测试这个可执行文件,然后再把它交给我的同事,最好是在ubuntu上,然后再在vb的mac上。无论如何,这里是错误的
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/torosean/pyinstaller/PyInstaller/loader/pyi_importers.py", line 270, in load_module
File "/home/torosean/Documents/python_funcs/uploader/build/My_GUI_login_simplified/out00-PYZ.pyz/wx", line 45, in <module>
File "/home/torosean/pyinstaller/PyInstaller/loader/pyi_importers.py", line 270, in load_module
File "/home/torosean/Documents/python_funcs/uploader/build/My_GUI_login_simplified/out00-PYZ.pyz/wx._core", line 4, in <module>
File "/home/torosean/pyinstaller/PyInstaller/loader/pyi_importers.py", line 409, in load_module
ImportError: /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1: undefined symbol: _glapi_tls_Dispatch
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/home/torosean/pyinstaller/pyinstaller/loader/pyi_importers.py”,第270行,在load_模块中
文件“/home/torosean/Documents/python_funcs/uploader/build/My_GUI_login_simplified/out00 PYZ.PYZ/wx”,第45行,in
文件“/home/torosean/pyinstaller/pyinstaller/loader/pyi_importers.py”,第270行,在load_模块中
文件“/home/torosean/Documents/python\u funcs/uploader/build/My\u GUI\u login\u simplified/out00 PYZ.PYZ/wx.\u core”,第4行,在
文件“/home/torosean/pyinstaller/pyinstaller/loader/pyi_importers.py”,第409行,在load_模块中
ImportError:/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1:未定义符号:_glapi_tls_Dispatch
现在我的问题是
1) 。这是否与PyInstaller如何将脚本编译成可执行文件有关。换句话说,从显示的错误可以看出,如果PyInstaller执行exec时出现了什么问题。(我个人并不“觉得”是这样,但我不确定)
2) 。这是虚拟机/ubuntu的问题吗?任何关于如何修复它的建议,到目前为止我还没有发现任何有用的东西
3) 。对于使用python脚本创建可执行文件的人来说,如何测试可执行文件,是使用虚拟机还是有更好的方法
如有任何建议,将不胜感激。
规格:
主机操作系统(Fedora 18 64位)
来宾操作系统(ubuntu 12.04 LTS 64位)
虚拟机:虚拟盒(4.2.12)
python 2.7.3
谢谢大家
主持人:
很抱歉,如果这个问题不属于这里,我想如果PyInstaller做了什么导致了这个错误,其他人可能会受益于了解它
编辑:
与vb上的OpenSUSE相同的结果。。。。
编辑:
做了三件事,成功了。。。
1) .从oracles网站安装了virtualbox。
2). 执行了一次更新,事情似乎神奇地工作了 我可以给你半个答案 当您正在编写的应用程序依赖于libGL,但pyinstaller在打包“二进制文件”时没有包含它时,就会发生这种情况 在pyinstaller“spec”文件中,您需要定义其他库并将它们附加到分析步骤返回的二进制文件列表中。在我的应用程序中,我完成了以下操作:
additionalLibs = []
additionalLibs.append( ("libGL.so.1", "/usr/lib64/libGL.so.1", 'BINARY') )
# yada yada
a = Analysis(['myApp.py'],
pathex=['/path/to/myAppDir'],
hiddenimports=[],
hookspath=None)
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.scripts,
a.binaries + additionalLibs,
a.zipfiles,
a.datas,
name=os.path.join('dist', 'myApp'),
icon="myApp.ico",
debug=False,
strip=None,
upx=True,
console=console )
然后,这将在打包的二进制文件中包含libGL——这在没有libGL.so.1或具有兼容libGL.so.1的所有系统上都非常有效。在具有不兼容libGL.so.1的系统上(如果您的系统是最新的&目标系统不是最新的,或者目标系统不是最新的),则会出现类似的错误。。。因此,“半个答案”
当我找到你的问题时,我正试图找到另一半的答案(让它一直有效)