我试图在Ubuntu 17.10上使用Pyinstaller做一些混合应用程序(Mac,Windos,Linux OS),但是当我这样做时:
pyinstaller XXX.py
它正确生成所有内容但无法执行程序(使用PyQT4 7 Python2.7制作)。 该程序包含 main.py& file.py& file.ui ,我该怎么做才能测试可执行文件?当我在/ dist或/ build中运行文件时,它没有做任何事情。
LOG
82 INFO:PyInstaller:3.3 82 INFO:Python:2.7.14 83信息:平台:Linux-4.13.0-16-generic-x86_64-with-Ubuntu-17.10-artful 83 INFO:写了/home/manel/Documentos/PythonProject/GUI.spec 85信息:UPX不可用。 86 INFO:使用路径扩展PYTHONPATH [' /家庭/ MANEL /文件/ PythonProject&#39 ;, ' /家庭/ MANEL /文件/ PythonProject'] 86 INFO:检查分析 86 INFO:构建分析因为out00-Analysis.toc不存在 87 INFO:初始化模块依赖图... 88 INFO:初始化模块图钩子...... 117 INFO:运行Analysis out00-Analysis.toc 129 INFO:缓存模块挂钩... 131 INFO:分析/home/manel/Documentos/PythonProject/GUI.py 960 INFO:处理预安全导入模块挂钩_xmlplus 2511 INFO:处理预查找模块路径钩子distutils 2834 INFO:处理预查找模块路径挂钩PyQt4.uic.port_v3 2835 INFO:处理预查找模块路径挂钩PyQt4.uic.port_v2 2963 INFO:装载模块挂钩...... 2963 INFO:加载模块挂钩" hook-distutils.py" ... 2963 INFO:加载模块挂钩" hook-sysconfig.py" ... 2964 INFO:加载模块挂钩" hook-xml.py" ... 3001 INFO:加载模块挂钩" hook-gtk.py" ... 3002警告:隐藏导入" gtkglext"未找到! 3002警告:隐藏导入" gdkgl"未找到! 3003警告:隐藏导入" gdkglext"未找到! 3003警告:隐藏导入" gtk.gdk"未找到! 3003警告:隐藏导入" gtk.gtkgl"未找到! 3003警告:隐藏导入" gtk.gtkgl._gtkgl"未找到! 3004警告:隐藏导入" gtkgl"未找到! 3046 INFO:加载模块挂钩" hook-lxml.etree.py" ... 3047 INFO:加载模块挂钩" hook-httplib.py" ... 3047 INFO:加载模块挂钩" hook-PyQt4.py" ... 3048 INFO:加载模块挂钩" hook-PyQt4.uic.py" ... 3049 INFO:加载模块挂钩" hook-PyQt4.QtGui.py" ... 3130 INFO:加载模块挂钩" hook-PyQt4.QtSvg.py" ... 3130 INFO:加载模块挂钩" hook-encodings.py" ... 3393 INFO:加载模块挂钩" hook-PyQt4.QtCore.py" ... 3410 INFO:加载模块挂钩" hook-PyQt4.QtXml.py" ... 3417 INFO:寻找ctypes DLL 3474警告:找不到通过ctypes发送的库msvcrt 3474 INFO:分析运行时挂钩... 3477 INFO:包括运行时挂钩' pyi_rth_qt4plugins.py' 3482 INFO:寻找动态库 4831 INFO:寻找鸡蛋 4831 INFO:Python库不是二进制依赖项。做额外的搜索...... 4860 INFO:使用Python库/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 4869 INFO:写入/home/manel/Documentos/PythonProject/build/GUI/warnGUI.txt的警告 4906 INFO:图形交叉引用写入/home/manel/Documentos/PythonProject/build/GUI/xref-GUI.html 4956信息:检查PYZ 4956 INFO:构建PYZ,因为out00-PYZ.toc不存在 4956 INFO:构建PYZ(ZlibArchive)/home/manel/Documentos/PythonProject/build/GUI/out00-PYZ.pyz 5244信息:建立PYZ(ZlibArchive)/home/manel/Documentos/PythonProject/build/GUI/out00-PYZ.pyz已成功完成。 5279 INFO:检查PKG 5279 INFO:构建PKG因为out00-PKG.toc不存在 5280 INFO:构建PKG(CArchive)out00-PKG.pkg 5294信息:构建PKG(CArchive)out00-PKG.pkg成功完成。 5295 INFO:Bootloader /usr/local/lib/python2.7/dist-packages/PyInstaller/bootloader/Linux-64bit/run 5295 INFO:检查EXE 5296 INFO:构建EXE,因为out00-EXE.toc不存在 5296信息:从out00-EXE.toc构建EXE 5296信息:将存档附加到EXE / home / manel / Documentos / PythonProject / build / GUI / GUI中的ELF部分 5300 INFO:从out00-EXE.toc构建EXE成功完成。 5301信息:检查收集 5301 INFO:构建COLLECT因为out00-COLLECT.toc不存在 5301 INFO:构建COLLECT out00-COLLECT.toc 5394 INFO:建立COLLECT out00-COLLECT.toc已成功完成。
非常感谢
答案 0 :(得分:1)
可能其中一个文件引发了错误。处理此问题的最佳方法是尝试从命令行运行应用程序。这将显示错误,如果有的话。
只需将终端cd
打开到dist
目录,然后输入main
答案 1 :(得分:0)
我认为@giantas建议您从终端(或命令提示符)运行.app(或.exe)文件,而不是运行.py文件。 /path/to/app/dist/MyApp.app/Contents/MacOS/MyApp
适用于Mac(在终端中),/path/to/app/dist/MyApp.exe
适用于Windows(在命令提示符下)。这将允许您观察捆绑应用程序后可能存在的任何错误。
听起来您没有在捆绑包中包含其他数据文件。您可以将其他.py或数据文件添加到PyInstaller .spec文件中的数据列表中,这些文件应该是在第一次在此应用程序上运行PyInstaller时生成的:
....
added_files = [
('your_ui_file.ui', '.'),
('Icons\\', 'Icons\\')
]
a = Analysis(['main.py'],
pathex=['C:\\Users\\your_name\\wherever\\main.py\\lives'],
binaries=[],
datas=added_files,
hiddenimports=['list.of.hidden.imports'],
....
PyInstaller docs中也对此进行了解释。如果您的主应用程序导入其他.py文件,则不需要将它们包含在datas
列表中。
您可能还需要考虑在捆绑过程中保存这些文件的目录。有关如何从可执行文件中正确调用数据文件的更全面的讨论,请查看此post。
或者,您可以将.ui文件复制到可执行文件所在的dist目录中。