PyInstaller created exc.不能在带有ubuntu的virtualbox上运行

2024-05-02 01:53:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用PyInstaller从我编写的GUI脚本(使用wx.python公司)使用此命令。。。在

   python /home/torosean/pyinstaller/pyinstaller.py -F -w My_GUI_login_simplified.py

我可以在主机上运行可执行文件,不存在任何问题,方法是cd到dist文件夹并运行。。。在

^{pr2}$

现在,当我在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

现在我的问题是?在

(一)。这是否与PyInstaller如何将脚本编译为可执行文件有关。换句话说,如果PyInstaller在执行exec时有什么问题,那么可以从显示的错误中判断出什么地方出错了。(我个人并不“感觉”是这样,但我也不确定)?在

(二)。这是虚拟盒/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) 一。执行了一个更新,一切似乎神奇地工作了!在


Tags: inpy脚本可执行文件homeubuntu错误line
1条回答
网友
1楼 · 发布于 2024-05-02 01:53:26

我可以给你一半的答案。。。在

当您编写的应用程序依赖于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(如果您的系统是最新的,而目标系统不是最新的,反之亦然),那么您将得到类似的错误。。。因此“半个答案”

当我发现你的问题时,我正试图找到另一半的答案(让它始终有效)。在

相关问题 更多 >