我正在尝试使用 pyinstaller 打包脚本以作为 Windows 服务运行。当尝试运行它时,我收到
ModuleNotFoundError: No module named 'urllib3.packages.six.moves'
错误。我正在使用命令
pyinstaller.exe --onefile --runtime-tmpdir=. --hidden-import win32timezone --hidden-import urllib3 laps_service.py
在虚拟环境中。您会看到我将其添加为
--hidden-import
但这没有任何区别。
经过一番谷歌搜索后,我发现卸载并重新安装 urllib3 和 requests 可能会有所帮助,所以我这样做了 - 我明确安装了
requests==2.24.0
,因为 servicemanager
需要 2.24.0;安装后,pip 自动卸载了 urllib3-2.1.0
并安装了兼容版本 urllib3-1.25.11
,但我仍然遇到同样的错误。
根据记忆,这个脚本在以前的 venv 中作为 pyinstaller exe 工作得非常好(在我不再拥有的笔记本电脑上),所以我不认为代码有任何问题,而是可能与某些包的版本有关。我已经运行了
pip check
但没有发现任何损坏的依赖关系。
完整的回溯如下,如果有帮助,我可以提供导入包的列表:
PS C:\LAPS> .\laps_service.exe --startup delayed install
Traceback (most recent call last):
File "laps_service.py", line 29, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 419, in exec_module
File "requests\__init__.py", line 43, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 419, in exec_module
File "urllib3\__init__.py", line 7, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 419, in exec_module
File "urllib3\connectionpool.py", line 11, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 419, in exec_module
File "urllib3\exceptions.py", line 2, in <module>
ModuleNotFoundError: No module named 'urllib3.packages.six.moves'
[14276] Failed to execute script 'laps_service' due to unhandled exception!