我在 Windows 10 64 位上使用 Python 3.7 32 位。 Python 是从 Python 网站上的可执行文件安装的,而不是 Anaconda 包。当我从命令提示符运行 pyinstaller 时,它返回错误: 我已经安装了 pypiwin32、pywin32 和 win32ctypes。但还是有错误。
我尝试从 Windows CMD、Pycharm 和虚拟环境运行 pyinstaller,所有这些都安装了必要的库,但我无法使其工作。
我在这个问题上搜索了很多,但找不到答案。有人可以帮忙吗?
打开python(使用Python 3.7.4测试)并检查是否可以在不干预的情况下从环境中找到模块:
python.exe
>>>import pywintypes
>>>import win32api
如果成功,修复很简单。在 PyInstaller 文件夹中找到文件 compat.py。并编辑以下两行。
替换:
from win32ctypes.pywin32 import pywintypes
from win32ctypes.pywin32 import win32api
与
import pywintypes
import win32api
我在 32 位 Windows 10 64 位计算机上运行 Python 3.6。使用“pip install pyinstaller”中的最新稳定版本我遇到了与您相同的错误。
解决此问题的最快方法是从 cmd 运行以下命令:
pip uninstall pyinstaller
然后在cmd中运行以下命令:
pip install https://github.com/pyinstaller/pyinstaller/tarball/develop
这为您提供了当前正在开发的版本,他们已修复了该问题。
请参阅 https://media.readthedocs.org/pdf/pyinstaller/latest/pyinstaller.pdf 了解更多信息。
我在某处读到过说 auto-py-to-exe 确实安装了正确版本的 pywin32-ctypes。所以解决方案可能是:安装 auot-py-to-exe 包。
我还没有看到问题。因此尚未验证该解决方案是否有效。
使用 auto-py-to-exe 一段时间了。有时,由于与此 SO 中的问题无关的原因,它需要进行其他调整才能使其正常工作。由于它基于 PyInstaller,因此安装它应该引入 PyInstaller 的所有正确依赖项。
这个问题有很多版本,但是,这个解决方案对我有用:
在 Windows 中,执行“where pyinstaller” - 这将告诉您它出现在路径中的位置,以及当您键入 pyinstaller 时它将从哪里运行。
我有不止一个:python 3.7 Scripts 目录中的旧版本,它首先出现在路径中,而 3.10 中的较新版本则在我的 AppData 目录中。
我一直在从 pip 安装、卸载和重新安装各种模块,这适用于当前的 3.10 python 安装,但该消息仍然存在。然后我尝试了“where pyinstaller”并意识到路径首先选择了 3.7 中的旧版本。因此,将 3.7 脚本移至 Scripts_bak,以便该路径不再从该位置获取 pyinstaller,并且在下一次运行 pyinstaller 时,一切都按预期工作。
我检查了旧的Python安装、缺少升级、Path环境变量,但最后我不得不运行
pip install --upgrade cffi
它修复了错误。