尝试使用Pyinstaller为我的python项目构建可执行二进制文件。
环境详情:
Python - 2.7.6,pip - 6.1.1,setuptools - 21.2.1
我能够成功构建项目。
rpmbuild -ta tarball;
而当我执行二进制文件时,它会抛出错误消息。
pyinstaller heatstackapp.py
......
......
83093 INFO: checking COLLECT
83093 INFO: Building COLLECT because out00-COLLECT.toc is non existent
83094 INFO: Building COLLECT out00-COLLECT.toc
jayaprakash@cloudenablers:/opt/core/heatstack/heatstack$
任何帮助都会非常明显。提前致谢。
答案 0 :(得分:1)
这是由于PyInstaller最终.exe
文件中未包含软件包或文件集。当PyInstaller无法自动检测所需的模块或不是脚本的额外数据文件(因此不属于导入和依赖项链的一部分)时,就会发生这种情况。
我无法从提供的信息中了解更多信息,但可以给出一些一般步骤。
.spec
文件并在其上运行PyInstaller,而不是您的.py
文件。在.py
文件上运行PyInstaller时,将首先创建一个.spec
文件,然后PyInstaller将从.exe
文件中生成.spec
。
运行一次PyInstaller后,您可以手动编辑.spec
文件以包含其他“隐藏”导入,以及直接PyInstaller在其上找不到的资源/数据文件(例如图像,元数据文件等)。自己的。
手动更新.spec
文件后,请勿在{{1}}文件上运行PyInstaller。而是直接在.py
文件上运行它,它将使用您手动指定的额外资源来构建.spec
。
另请参阅this answer on a utility bundled with PyInstaller that can make a .spec
file for different cases。
.exe
文件中在规范文件中,有一个.spec
行,可以用非常特定的格式进行更新,以包括单个文件或整个文件夹及其内容。
如果PyInstaller缺少某些需要的导入(通常是因为特定的软件包正在使用某种隐式,非标准的方法来管理其一个或多个依赖项),则可以告诉datas =
文件中的PyInstaller包括它无论如何。