【发布时间】:2016-07-17 02:28:33
【问题描述】:
我正在使用 wxPython 编写一个带有 GUI 的应用程序。我有两台装有 CentOS 7 的机器。第一台是构建机器,另一台是干净的。构建机器逻辑上已经安装了所有源代码编译。我想实现我的应用程序可以在任何 CentOS 7 机器上运行而无需任何依赖。所以,这就是问题所在。
源代码编译完成正常,但是当我尝试在干净的机器上运行二进制文件时,启动时出现以下错误:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python2.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module
File "gui.py", line 12, in <module>
File "/usr/lib/python2.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module
File "site-packages/wx-2.8-gtk2-unicode/wx/__init__.py", line 45, in <module>
File "/usr/lib/python2.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module
File "site-packages/wx-2.8-gtk2-unicode/wx/_core.py", line 4, in <module>
File "/usr/lib/python2.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 546, in load_module
ImportError: /tmp/_MEI6Ni7CP/libX11.so.6: undefined symbol: xcb_poll_for_reply64
main returned -1
我的规范文件如下所示:
# -*- mode: python -*-
block_cipher = None
a = Analysis(['main.py'],
pathex=['/home/user/gui'],
binaries=None,
datas=[('images/icon.png', 'images'), ('images/logo.png', 'images'), ('images/head.jpg', 'images'), ('images/step_background.png', 'images')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name='gui',
debug=False,
strip=False,
upx=True,
console=True ) # Only for debug
注意:当我在干净的机器上运行yum update 时,一切都运行良好,但我希望它完全独立于系统库。所以用户不必更新或安装任何东西。我正在寻找一种如何将这种依赖关系“捆绑”到应用程序本身的方法,但我不知道哪个/如何。
有什么办法可以解决这个问题吗? 谢谢
编辑:
这很可能是由旧的/丢失的libxcb 库引起的,但我仍然不知道如何将它捆绑到二进制文件中。
【问题讨论】:
标签: python user-interface pyinstaller wxwidgets