我试图使用pyinstaller来创建我的Python程序的单个exe文件,但是当该过程完成时,exe就无法运行。在查看进程的控制台输出后,我可以看到该行:
126946 INFO:寻找动态库
我得到几百行"警告:未找到lib:api-ms-win-crt- 路径到dll的任何数量的不同.dll 依赖关系或pyd已保存
我使用默认配置安装了Python,并且总是使用pip安装Python包。 Pyinstaller应该是直截了当的,不需要很多额外的步骤,比如创建一个setup.py文件,但似乎缺少一些东西,告诉pyinstaller在哪里寻找那些缺少的库。这有解决方法吗?或者甚至是一个更好的python来编译我应该使用的编译器?
编辑: 提供更多信息 - 我的程序由5个模块组成,其中我使用了三个第三方软件包,包括:PyQt5,pandas和ArcGIS。另外,我有两个sql文件也是程序的一部分。我觉得pyinstaller只能编译简单的脚本,并且使用其他软件包,模块和外部文件,它只是为了处理那种东西而做的。
答案 0 :(得分:1)
无论如何,希望这里的答案有效,审核员/主持人也不会对此感到害怕; p
我已经从我推荐的解决方案中复制了说明,并将该链接用作补充。 https://www.youtube.com/watch?v=OZSZHmWSOeM
<强>先决条件强>
Python:Python 2.7或Python 3.3+(基本上是运行pyinstaller的任何东西)
Chrome:运行用户界面
<强>安装强>
下载压缩文件夹
打开cmd /终端和cd
解压缩文件夹(建议暂时将其放在桌面上)
执行pip install -r requirements.txt
运行应用程序
运行run.py
。 Chrome将在app模式下打开,项目在里面运行。
使用应用
选择您的脚本位置(粘贴或使用文件资源管理器)
当文件存在时,地址框轮廓将变为蓝色
选择其他选项并添加图标或其他文件等内容
点击底部的蓝色大按钮进行转换
完成后在[解压缩文件夹] /输出中查找转换后的文件
传递带参数的文件
或者你可以执行python run.py [filename]
。这将在脚本位置打开带有文件名的窗口。
答案 1 :(得分:0)
您需要安装Windows 10 SDK,然后更新您的路径以包含ucrt dll,这可以在安装后找到:
C:\ Program Files(x86)\ Windows Kits \ 10 \ Redist \ ucrt \ DLLs \ x86
答案 2 :(得分:0)
我做了一系列更改,导致构建编译并正确运行。
首先,pyinstaller缺少一个&#39; hook&#39; pandas的文件,因此必须手动创建。对我来说,钩子文件夹位于:&#34; C:\ Users \ natha \ AppData \ Local \ Programs \ Python \ Python36-32 \ Lib \ site-packages \ PyInstaller \ hooks&#34;
在该文件夹中,我创建了一个名为hook-pandas.py的文件,该文件的唯一内容是一行:hiddenimports = [&#39; pandas._libs.tslibs.timedeltas&#39;]
我确实安装了Windows 10 SDK,但我不确定这是否只是问题的一部分,或者它会影响到什么。我的程序由多个模块组成,因为我喜欢在不同的文件中分离不同类型的进程。但是,为简化起见,我将所有代码合并到一个.py文件中,并且只有一个文件包含我的PyQt5 / Qt Designer自动生成的GUI代码。我删除了所有类似
的导入from x.y import z
我在几个版本中收到错误,似乎pyinstaller没有认识到这些东西。所以我把事情做得非常直截了当,比如
import PyQt5
最后,当我使用-p命令编译构建时,我添加了两个文件路径;一个指向我的程序的根位置,这是保存另一个模块(PyQt5模块)的位置,第二个路径是&#34; C:\ Users \ natha \ AppData \ Local \ Programs \ Python \ Python36- 32 \ LIB \站点包&#34 ;.一旦这些东西到位,编译正常完成,构建运行完美。总而言之,这里成功的关键是:
- 确保有一个hook-pandas.py文件如果您的脚本中正在使用pandas - 确保hook-pandas.py文件包含以下行:
hiddenimports = ['pandas._libs.tslibs.timedeltas']
- 确保-p命令用于将pyinstaller定向到保存自定义模块和任何python包的位置。我的-p命令如下所示:
-p C:\Users\natha\Desktop\Python_Projects\CompEval\code:C:\Users\natha\AppData\Local\Programs\Python\Python36-32\Lib\site-packages
注意分隔两条路径的冒号。
我认为这些是要检查的主要内容,而次要的事情将是
from x.y import z
输入类型,以避免那些。