使用 setuptools/distutils 构建 PyInstaller exe 时 ensure_local_distutils 内的 AssertionError
AssertionError inside of ensure_local_distutils when building a PyInstaller exe using setuptools/distutils
我正在尝试使用 PyInstaller 将一些 Python 代码转换为 .exe
。我的代码使用了 distutils,它在过去已经让我有些头疼,因为它似乎重复了 setuptools 的功能,并且与它的交互很奇怪。它例如需要 才能正常工作,这对我来说似乎很不自然。
我需要在我的项目中使用这两个包。我按顺序 import setuptools; import distutils
导入了两个包,因为另一个顺序引发了一个已经令人担忧的警告。
我的脚本运行正常,但在我将它变成一个 exe 文件后,我在 setuptools 的可疑 _distutils_hack
子模块中得到了回溯。 是的,它只是打印了一个没有上下文的文件名。
Traceback (most recent call last):
<18 lines omitted>
File "PyInstaller\loader\pyimod03_importers.py", line 495, in exec_module
File "_distutils_hack\override.py", line 71, in <module>
File "_distutils_hack\__init__.py", line 71, in do_override
File "_distutils_hack\__init__.py", line 59, in ensure_local_distutils
AssertionError: C:\Users\<omitted>\AppData\Local\Temp\_MEI294562\distutils\core.pyc
我正在使用
Python 3.7.7 on win32
(但我用3.8、3.9、3.10转载)
pyinstaller==4.8
(2022 年 1 月)Windows
distutils==3.7.7
(内置)
setuptools==60.5.0
(2022 年 1 月)
显然,setuptools
已在 PyPI 上列出,因此可以升级,但 distutils
未在 PyPI 上列出,因此无法升级(该版本与 Python 捆绑在一起)。
我发现的解决方法是降级到
pip install --upgrade setuptools==59.8.0
我reported this issue 到该项目并确认在 setuptools==60.0.0 中引入了错误。当我发现更多信息或它得到修复时,我会更新这个答案
我正在尝试使用 PyInstaller 将一些 Python 代码转换为 .exe
。我的代码使用了 distutils,它在过去已经让我有些头疼,因为它似乎重复了 setuptools 的功能,并且与它的交互很奇怪。它例如需要
我需要在我的项目中使用这两个包。我按顺序 import setuptools; import distutils
导入了两个包,因为另一个顺序引发了一个已经令人担忧的警告。
我的脚本运行正常,但在我将它变成一个 exe 文件后,我在 setuptools 的可疑 _distutils_hack
子模块中得到了回溯。 是的,它只是打印了一个没有上下文的文件名。
Traceback (most recent call last):
<18 lines omitted>
File "PyInstaller\loader\pyimod03_importers.py", line 495, in exec_module
File "_distutils_hack\override.py", line 71, in <module>
File "_distutils_hack\__init__.py", line 71, in do_override
File "_distutils_hack\__init__.py", line 59, in ensure_local_distutils
AssertionError: C:\Users\<omitted>\AppData\Local\Temp\_MEI294562\distutils\core.pyc
我正在使用
Python 3.7.7 on win32
(但我用3.8、3.9、3.10转载)pyinstaller==4.8
(2022 年 1 月)Windowsdistutils==3.7.7
(内置)setuptools==60.5.0
(2022 年 1 月)
显然,setuptools
已在 PyPI 上列出,因此可以升级,但 distutils
未在 PyPI 上列出,因此无法升级(该版本与 Python 捆绑在一起)。
我发现的解决方法是降级到
pip install --upgrade setuptools==59.8.0
我reported this issue 到该项目并确认在 setuptools==60.0.0 中引入了错误。当我发现更多信息或它得到修复时,我会更新这个答案