Pyinstaller缺少引导程序。

3

我在win10-64上进行了Python37-32的全新安装。所有的要求似乎都已满足,我的hello world python文件正在运行。

原始答案为"最初的回答"。

if __name__ == '__main__' :
    print("hello world")

然而,当我尝试使用pyinstaller时,出现了问题。"最初的回答"
pyinstaller hello.py

最初的回答:出现错误结束
5764 INFO: Building PKG (CArchive) PKG-00.pkg completed successfully.
5764 INFO: Bootloader c:\users\xxxxxxx\appdata\local\programs\python\python37-32\lib\site-packages\PyInstaller\bootloader\Windows-32bit\run_d.exe
5764 INFO: checking EXE
5764 INFO: Building EXE because EXE-00.toc is non existent
5779 INFO: Building EXE from EXE-00.toc

Fatal error: PyInstaller does not include a pre-compiled bootloader for your
platform. For more details and instructions how to build the bootloader see
<https://pyinstaller.readthedocs.io/en/stable/bootloader-building.html>

这是一个基本的Windows安装,我不应该手动重新编译任何引导程序(我习惯于使用旧版本的Python和pyinstaller,并且从未遇到过问题)。 我应该在哪里寻找解决此问题的方法?

编辑

错误出现在python37-32中,但在python37(64位)中没有出现。


你是怎么安装pyinstaller的? - undefined
@RvdK python -m pip install pyinstaller 我也尝试了开发版本。效果相同。 - undefined
3个回答

4

从源代码下载PyInstaller,不要使用pip安装。

python setup.py install

如果你的系统是64位系统,则会构建64位的引导程序,但python37-32需要32位的引导程序。在源代码中,进入cd bootloader并执行python ./waf all --target-arch=32bit,如此处所述。
然后将build目录下的run.exe复制到pyinstaller的32位引导程序文件夹中。
在pyinstaller的github上已经开了一个issue

短巴士在这里:我明白了,所以你下载这个解压缩文件,进入引导程序目录,为你的目标编译引导程序 python ./waf all --target-arch=32bit,然后运行 python setup.py install - undefined

2
最初的回答: 首先,确保您正在运行最新版本的Pyinstaller == 3.5。 早期版本的pyinstaller不支持python3.7。
如果没有问题,可能是因为pyinstaller安装不完整。 手动检查您的pyinstaller安装是否存在引导程序文件。引导程序(预编译)文件应位于Python安装中。
c:\users\xxxxxxx\appdata\local\programs\python\python37-32\lib\site-packages\PyInstaller\bootloader\Windows-32bit\run_d.exe

作为最后的选择,我建议通过setup.py安装pyinstaller。当你运行setup.py时,它应该会为你的机器构建引导程序。 https://pythonhosted.org/PyInstaller/installation.html#installing-from-the-archive。Original Answer翻译成"最初的回答"。

Python37-32\Lib\site-packages\PyInstaller\bootloader\Windows-64bit 包含 run.exerun_d.exerunw.exerunw_d.exePython37-32\Lib\site-packages\PyInstaller\bootloader\Windows-32bit 只有 runw_d.exe。所以我猜测在安装过程中,pip没有构建 booltoader。 - undefined
我不能确定,因为我不熟悉引导程序构建的可执行文件的确切名称。但是我认为值得调查PyInstaller的较低版本。 - undefined
似乎使用pip或源代码安装得到的结果是相同的。在64位机器上,生成64位引导程序(即使您使用32位Python版本)。我有一个解释,但问题没有解决。 - undefined
不确定这是否有帮助,但是当你通过源代码安装时,你可以手动删除已经编译好的引导程序文件。然后Python会为你重新构建它们。 - undefined
正确。并且当它检测到64位的Windows系统时,它不会构建32位的引导程序(如果我的理解是正确的)。 - undefined

0
我遇到了同样的问题,我做了这个:
pip uninstall PyInstaller
pip install PyInstaller

这是发生的事情:它成功了!!!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接