我是Python新手。目前正在使用Python 2.7。作为当前的练习,我正在通过PyInstaller将Python脚本转换为exe文件。我在通过生成的exe找到某些模块时遇到了麻烦,这些模块在我运行Python脚本时工作得非常好。
我在PyInstaller中通过--onefile选项创建了exe。作为练习的一部分,我已经完成了以下几点,
请注意,当我从命令行运行python文件时,它工作正常,它只在我创建exe文件时出错。
Problem Image附在此处。 任何帮助将不胜感激。
此致 Sunay Shah
答案 0 :(得分:0)
我看到很多人都面临着这个问题。我修复了问题,以下是相同的解决方案。
在PyInstaller的帮助下打包时,我发现PyInstaller正在分析给定的python文件,并在分析阶段找到它自己导入的包。那些在包装过程中找到并将被压缩的包可以在PyInstaller创建的build文件夹中看到(out00-Analysis.toc,out00-PKG.toc,out00-PYZ.toc,out01-Tree.toc,warnXXX。 txt文件)是要查看的重要文件。
在我的问题分析期间,我发现在分析阶段我没有导入我的某些包。我开始知道挖掘我们需要将这些包包含在数据文件中。所以我将几乎所有需要的软件包复制到.spec文件的数据部分。仍然存在问题。我稍微挖掘一下,发现尽管工件被打包,但在执行过程中无法导入。
我经历了一些更详细的细节,发现问题是在运行时期间某些模块无法通过PyInstaller导入。我发现可以在hidden-imports的帮助下解决问题。我在hidden-import部分添加了缺少的模块,解决了这个问题。
长话短说,以下是关键问题 1.使用默认选项创建Build,解决所有问题 2.将所有必需的模块包含在具有数据部分的构建中,这是PyInstaller找不到的。 3.添加Pyinstaller未导入的隐藏导入。 (例如,如果在运行时未加载abc.contrib.usages模块,请将其添加到hiddeniports sectin中。 4.一旦创建exe,就可以使用默认选项--onefile来创建构建。 5.解决问题的最佳方法是分析在构建过程中在build文件夹中创建的所有文件。
希望这有助于某人解决问题。
此致 Sunay Shah