【问题标题】:How to remove Bad magic number error in Pyinstaller如何删除 Pyinstaller 中的 Bad Magic Number 错误
【发布时间】:2020-09-15 08:29:49
【问题描述】:

我有一个包含app.pysource.py 文件的python 项目。项目还有其他用于配置和日志的文件。我已使用pyinstallerapp.py 转换为app.exe

pyinstaller app.py

这已经创建了一个dist 目录。我已将source.py、配置和日志文件复制粘贴到dist 目录中。

我还想为此创建一个设置,它将安装在另一台机器上。我无法共享 source.py 文件,因为它不是 .py 我使用了 source.pyc。我现在使用了 inno 编译器并创建了一个安装文件。

据我了解,pyinstaller 会自动绑定 python 解释器,所以我们不需要在任何其他机器上安装 python。我只是安装了 exe,它开始正常工作。

在我的项目中,我有一个调用source.pyc 文件的功能,如下所示:

exec(os.system("source.pyc install"))

这在我的开发机器上运行良好,但在其他机器上,它给了我bad magic error

根据在线论坛,当我们尝试使用不同的 python 版本解释器运行 pyc 文件时,通常会发生这种情况,但在我的情况下,我使用的是相同的 pyinstaller 解释器。那这个错误怎么来的。

除了 app.py 之外,还有没有使用 pyinstaller 编译附加文件的方法。我怎样才能消除这个错误。谢谢

【问题讨论】:

    标签: python pyinstaller pyc


    【解决方案1】:

    PyInstaller 不会将 Python 解释器与 EXE 文件捆绑或绑定。 EXE 文件是一个编译 二进制文件,在编译时不需要解释器。 PYC 文件仍然需要解释器。

    您也可以使用 PyInstaller 编译其他文件(即source.py),然后将编译后的 EXE 文件移动到与app.exe 相同的目录。在这种情况下,您将能够从主程序运行import os; os.system("source.exe") 的命令。如果您的其他编译脚本需要 app.exe 编译中未使用/包含的模块/库,则在移动已编译的 source.exe 时,您还需要将捆绑的库移动到 app.exe 目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-09
      • 2020-03-30
      • 2018-07-27
      • 2015-11-16
      • 2013-08-01
      • 2021-12-27
      • 2018-06-14
      相关资源
      最近更新 更多