16

我正在尝试为此处的代码.exe制作一个可执行文件( Windows 文件)。要运行的主文件是. 我发现 pyinstaller 是创建 exe 文件的更好选择。src/GUI.py

我尝试了一个文件夹和单个可执行文件选项。我尝试从根目录以及目录中创建 exe src

pyinstaller src/GUI.py
pyinstaller src/GUI.py -F
cd src
pyinstaller GUI.py
pyinstaller GUI.py -F

GUI.exe使用上述所有方法创建。但是每当我尝试运行该GUI.exe文件时,都会收到错误消息no module named pkg_resources.py2_warn pyinstaller。我尝试GUI.exedist创建它的目录、根目录和src目录中运行。在任何地方,我都会遇到同样的错误。我怎样才能解决这个问题?

PS:理想情况下,我希望有一个.exe可以分发的文件,他们可以独立运行它,而无需安装依赖项或重新创建文件夹结构。但是我知道 pyinstaller 只打包代码文件,我必须单独共享图像,并且在运行 exe 文件时,必须重新创建相同的结构。我对此也无所谓。我什至可以共享一个文件夹 exe。我只想共享一个文件或文件夹,用户可以在不安装任何依赖项的情况下运行它们。有可能吗?

PPS:我也愿意使用 pyinstaller 以外的工具。

4

6 回答 6

21

自 2020 年 7 月 16 日起,升级setuptools 即可解决此错误。不再需要像其他答案规定的那样降级设置工具。看到这个讨论

在 Win10 上,升级为

pip3 install setuptools --upgrade

然而,正如 Vikramaditya 所说,降级低于 45.0.0 版也可以。

于 2020-07-16T23:55:00.913 回答
9

这是这个 github ticketsetuptools中解释的问题。考虑使用以下命令将您的设备降级到 44.0 或更低版本setuptools

pip install --upgrade 'setuptools<45.0.0'
于 2020-05-09T08:03:36.653 回答
9

用来PyInstaller --hidden-import=pkg_resources.py2_warn my_script.py解决这个问题。这同样适用于大多数ModuleNotFoundErrors。

该隐藏模块已在 setuptools 版本中添加45.0.0并在其中删除,49.0.0因此在下面降级或在上面升级也将修复它。

请不要import pkg_resources.py2_warn像其他人那样通过将代码放在代码顶部来解决此问题,因为如果您将 setuptools 版本更改为上述范围之外,这显然会中断。

一旦我们最终发布它,这个问题将在4.0PyInstaller 版本中永久修复。

于 2020-07-18T22:15:51.567 回答
1

降级前卸载 setuptools 提示:部分​​功能可能会受到影响

于 2020-05-09T08:42:00.270 回答
0

我喜欢从 .bat 文件运行 pyinstaller。它使我更容易看到所有列出的选项。我遇到了与您构建其他东西但包括隐藏导入工作相同的错误。这是一个bat文件的例子

del /S /F /Q .\dist\*
del /S /F /Q .\build\*

pyinstaller -F -y --clean^
    --hidden-import="pkg_resources.py2_warn"^
    --hidden-import=h5py ^
    code_to_package.py -n NameOFApp
于 2022-02-23T15:19:09.810 回答
0

这些修复都没有对我有用,我注意到我的问题是错误消息实际上开始了:

"c:\path\to\python36\lib\site-packages\PyInstaller\ loader\pyimod03_importers.py", line 627, in exec_module" 我使用python3.7(py3.7虚拟环境,Win10)时的文件。我卸载了 Py3.6 并修复了它。

于 2021-06-16T07:57:28.193 回答