【问题标题】:How to use PyInstaller with multiple .py?如何将 PyInstaller 与多个 .py 一起使用?
【发布时间】:2018-05-04 02:31:28
【问题描述】:

我正在尝试在 Ubuntu 17.10 上使用 Pyinstaller 做一些混合应用程序(Mac、Windos、Linux OS),但是当我这样做时:

pyinstaller XXX.py 

它可以正确生成所有内容,但无法执行程序(使用 PyQT4 7 Python2.7 制作)。 该程序包含ma​​in.py & file.py & file.ui,我应该如何测试可执行文件?当我在 /dist 或 /build 中运行文件时,它什么也没做。

日志

82 信息:PyInstaller:3.3 82 信息:Python:2.7.14 83 信息:平台:Linux-4.13.0-16-generic-x86_64-with-Ubuntu-17.10-artful 83 信息:写 /home/manel/Documentos/PythonProject/GUI.spec 85 信息:UPX 不可用。 86 信息:使用路径扩展 PYTHONPATH ['/home/manel/Documentos/PythonProject', '/home/manel/Documentos/PythonProject'] 86 INFO:检查分析 86 信息:构建分析,因为 out00-Analysis.toc 不存在 87 信息:正在初始化模块依赖图... 88 信息:初始化模块图挂钩... 117 信息:运行分析 out00-Analysis.toc 129 信息:缓存模块挂钩... 131 信息:分析 /home/manel/Documentos/PythonProject/GUI.py 960 INFO:处理预安全导入模块挂钩 _xmlplus 2511 信息:处理预查找模块路径挂钩 distutils 2834 信息:处理预查找模块路径挂钩 PyQt4.uic.port_v3 2835 信息:处理预查找模块路径挂钩 PyQt4.uic.port_v2 2963 信息:正在加载模块挂钩... 2963 信息:正在加载模块挂钩“hook-distutils.py”... 2963 信息:正在加载模块挂钩“hook-sysconfig.py”... 2964 信息:正在加载模块挂钩“hook-xml.py”... 3001 信息:正在加载模块挂钩“hook-gtk.py”... 3002 警告:未找到隐藏的导入“gtkglext”! 3002 警告:未找到隐藏的导入“gdkgl”! 3003 警告:未找到隐藏的导入“gdkglext”! 3003 警告:未找到隐藏的导入“gtk.gdk”! 3003 警告:未找到隐藏的导入“gtk.gtkgl”! 3003 警告:未找到隐藏的导入“gtk.gtkgl._gtkgl”! 3004 警告:未找到隐藏的导入“gtkgl”! 3046 信息:正在加载模块挂钩“hook-lxml.etree.py”... 3047 信息:正在加载模块挂钩“hook-httplib.py”... 3047 信息:正在加载模块挂钩“hook-PyQt4.py”... 3048 信息:正在加载模块挂钩“hook-PyQt4.uic.py”... 3049 信息:正在加载模块挂钩“hook-PyQt4.QtGui.py”... 3130 信息:正在加载模块挂钩“hook-PyQt4.QtSvg.py”... 3130 信息:正在加载模块挂钩“hook-encodings.py”... 3393 信息:正在加载模块挂钩“hook-PyQt4.QtCore.py”... 3410 信息:正在加载模块挂钩“hook-PyQt4.QtXml.py”... 3417 信息:寻找 ctypes DLL 3474 警告:未找到 ctypes 所需的库 msvcrt 3474 信息:分析运行时挂钩... 3477 信息:包括运行时挂钩“pyi_rth_qt4plugins.py” 3482 信息:寻找动态库 4831 INFO:寻找鸡蛋 4831 信息:Python 库不在二进制依赖项中。进行额外搜索... 4860 信息:使用 Python 库 /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 4869 信息:写入 /home/manel/Documentos/PythonProject/build/GUI/warnGUI.txt 的警告 4906 信息:图形交叉引用写入 /home/manel/Documentos/PythonProject/build/GUI/xref-GUI.html 4956 信息:检查 PYZ 4956 信息:构建 PYZ,因为 out00-PYZ.toc 不存在 4956 信息:构建 PYZ(ZlibArchive)/home/manel/Documentos/PythonProject/build/GUI/out00-PYZ.pyz 5244 信息:构建 PYZ (ZlibArchive) /home/manel/Documentos/PythonProject/build/GUI/out00-PYZ.pyz 成功完成。 5279 信息:检查 PKG 5279 信息:构建 PKG,因为 out00-PKG.toc 不存在 5280 信息:构建 PKG(CArchive)out00-PKG.pkg 5294 信息:构建 PKG (CArchive) out00-PKG.pkg 已成功完成。 5295 信息:引导加载程序/usr/local/lib/python2.7/dist-packages/PyInstaller/bootloader/Linux-64bit/run 5295 信息:检查 EXE 5296 信息:构建 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 信息:构建 COLLECT,因为 out00-COLLECT.toc 不存在 5301 信息:构建收集 out00-COLLECT.toc 5394 信息:构建 COLLECT out00-COLLECT.toc 已成功完成。

还是谢谢

【问题讨论】:

    标签: python pyqt4 pyinstaller


    【解决方案1】:

    我认为@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 目录。

    【讨论】:

    • 但是我的应用在pyinstaller之前没有错误,但是不知道如何正确捆绑,就这样
    • 如果没有看到错误消息,您的问题很难诊断。您能否从命令行运行捆绑的应用程序并将错误消息复制到您的原始帖子作为编辑? PyInstaller 可能已正确捆绑应用程序,但如果您引用其相对路径,则无法找到代码中调用的外部文件 - PyInstaller 创建的可执行文件在构建后将不再与原始 .py 文件位于同一位置。
    【解决方案2】:

    可能其中一个文件引发了错误。处理此问题的最佳方法是尝试从命令行运行应用程序。这将向您显示错误(如果有)。 只需打开终端cd 进入dist 目录然后输入main

    【讨论】:

    • 请问有人知道如何处理 2 个 .py 文件 + .ui (PyQt4) 吗?还是谢谢
    猜你喜欢
    • 2016-12-21
    • 2021-05-17
    • 2018-05-23
    • 1970-01-01
    • 2020-02-21
    • 2018-07-22
    • 2019-08-06
    • 2013-02-01
    • 1970-01-01
    相关资源
    最近更新 更多