I am facing a problem when converting my python app to .exe- file. The issue seems to be with keystoneauth1 library.
I created a minimal test "hello.py" for troubleshooting and isolated the issue to be when importing keystoneauth1.identity.v3. I can run the script below in console normally with expected output but the built .exe- file fails.
from keystoneauth1.identity import v3
print("Hello World!")
Following errors occur when running the created .exe- files:
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'
I have tested with python versions 3.9.13 and 3.10.11. I am using virtual environment.