【问题标题】:Executables made with pyinstaller not working使用 pyinstaller 制作的可执行文件不起作用
【发布时间】:2020-04-21 22:20:40
【问题描述】:

过去几周我一直在自学 Python3/API/PyQt5 和 OOP,我终于制作了一个可以运行的应用程序,耶! 我一直在使用 Ubuntu 19,当我从终端运行该应用程序时,它运行良好。问题是试图编译它(正确的术语?)以使其成为 Linux 和 Windows 的可执行文件。

我使用pyinstaller app.py --onefile -w --icon="app.ico" 制作文件,但没有看到任何错误。 我使用 Windows 10 编译 exe。

这是问题所在:在 Linux 上,我得到一个无法执行的“共享库”文件,而在 Windows 上,exe 刚刚损坏。我得到的只是一个错误,说“这个程序不能在你的系统上运行”,或者类似的东西。

这是一个非常简单的带有 PyQt5 GUI 的 1 个脚本应用程序。我对这一切都很陌生,这是迄今为止最难的部分。我已经被困了好几天了,我无法让它工作。

如果有帮助,我可以给你们应用程序代码,我只是认为我没有足够的代表来发布链接,所以它可能必须是一个代码块。

由于我没有想法,我将不胜感激你们可以提供的任何帮助。 干杯!

编辑添加:windows 8.1 在运行 app.exe 时给出错误消息“错误 -3 from inflate: invalid block lengths”

【问题讨论】:

  • 1) 在 Linux 中,您应该找到一个名为“app”的可执行文件(没有扩展名,因为您是 app.py)。 2)在windows中使用dependency walker查看是否有dll丢失
  • 有一个名为 app 的文件没有扩展名,当我查看属性时,它是一个“共享库”文件。我看了一些 yt 视频,每个人似乎都得到了一个可执行文件,即使在 linuc 上也是如此。我的不是。当我单击它时,我收到一条消息,说没有可用于运行该文件的程序。 2)我不知道什么是依赖步行者,所以我会去看看!感谢您的信息
  • 1) 在终端上执行:./app
  • 嗯,好的。我期待一个文件,用户会双击我在视频中看到的广告,但可能是不同的设置或另一种 Linux 风格。我会试试看。谢谢
  • 我很困惑为什么你要在 Linux 上使用pyinstaller?几乎所有的 Linux 发行版都有一个不错的包管理器,所以安装一个依赖 Python 和 Qt 的包很简单。

标签: python pyqt5 pyinstaller


【解决方案1】:

经过更多的修补,我终于有了一个可以工作的 exe。 我使用 -D 来创建目录而不是 --onefile 因为那不起作用。它使一个 exe 不起作用。 Windows 抱怨它无法解压缩应用程序。 dist 目录中的 exe 适用于 Windows 8.1 和 Windows 10。未在 Win 7 上测试。

我还包含了 png 和 ico 文件,并使用了带有 python 3.8 的干净环境,而不是安装了 3.7 的工作环境。我不确定这些事情是否有所作为,但如果其他人正在寻找答案,这可能会有所帮助。

我的最终命令: pyinstaller -y -D -w -i "FULL PATH TO ICON .ico" --add-data "FULL PATH TO IMAGE .png";"." "FULL PATH TO PY FILE /app.py"

【讨论】:

  • 但是 linux 呢?
【解决方案2】:

要使其在 Unix 系统上工作,您可能必须在终端中使用 dos2unix "appname",因为 Windows 会为任何包含文本的文件添加一些奇怪的结尾。这就是它对我的工作方式

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 2020-01-28
    • 2019-04-06
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 2021-02-02
    相关资源
    最近更新 更多