Windows下用PyInstaller等工具打包exe时keystoneauth1报错
Python打包exe时keystoneauth1相关问题
将Python应用转换为exe文件时遇到问题,经最小测试脚本hello.py验证,问题出在导入keystoneauth1.identity.v3环节——脚本在控制台可正常运行,但打包后的exe执行失败。已在Python 3.9.13和3.10.11版本的虚拟环境中测试。
使用不同打包工具时出现的错误如下:
PyInstaller错误
File "hello.py", line 1, in <module> File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module File "keystoneauth1\identity\__init__.py", line 13, in <module> File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module File "keystoneauth1\identity\base.py", line 21, in <module> File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module File "keystoneauth1\access\__init__.py", line 13, in <module> File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module File "keystoneauth1\access\access.py", line 20, in <module> File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module File "keystoneauth1\access\service_catalog.py", line 22, in <module> File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module File "keystoneauth1\discover.py", line 28, in <module> File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module File "os_service_types\__init__.py", line 18, in <module> File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module File "os_service_types\service_types.py", line 23, in <module> File "os_service_types\data\__init__.py", line 30, in read_data FileNotFoundError: [Errno 2] No such file or directory: '\\Local\\Temp\\_MEI2202\\os_service_types\\data\\service-types.json' [13472] Failed to execute script 'hello' due to unhandled exception!
cx_Freeze错误
.venv\Lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 124, in run .venv\Lib\site-packages\cx_Freeze\initscripts\console.py", line 16, in run exec(code, module_main.__dict__) File "hello.py", line 1, in <module> File ".venv\lib\site-packages\keystoneauth1\identity\__init__.py", line 13, in <module> from keystoneauth1.identity import base File ".venv\lib\site-packages\keystoneauth1\identity\base.py", line 21, in <module> from keystoneauth1 import access File ".venv\lib\site-packages\keystoneauth1\access\__init__.py", line 13, in <module> from keystoneauth1.access.access import * # noqa File ".venv\lib\site-packages\keystoneauth1\access\access.py", line 20, in <module> from keystoneauth1.access import service_catalog ImportError: cannot import name 'service_catalog' from partially initialized module 'keystoneauth1.access' (most likely due to a circular import) (build\exe.win-amd64-3.10\lib\keystoneauth1\access\__init__.pyc)
py2exe错误
File "hello.py", line 1, in <module> File "keystoneauth1\identity\__init__.pyc", line 13, in <module> File "keystoneauth1\identity\base.pyc", line 21, in <module> File "keystoneauth1\access\__init__.pyc", line 13, in <module> File "keystoneauth1\access\access.pyc", line 20, in <module> File "keystoneauth1\access\service_catalog.pyc", line 22, in <module> File "keystoneauth1\discover.pyc", line 28, in <module> File "os_service_types\__init__.pyc", line 18, in <module> File "os_service_types\service_types.pyc", line 23, in <module> File "os_service_types\data\__init__.pyc", line 30, in read_data FileNotFoundError: [Errno 2] No such file or directory: '\\dist\\library.zip\\os_service_types\\data\\service-types.json'
内容的提问来源于stack exchange,提问作者masto12
相关产品推荐
相关产品推荐

