I'm trying to make an executable from my application in python on MacOS. When running the application I get no error and everything works. However, when I'm using pyinstaller to create the executable I get this warning during the generation of the executable
WARNING: Failed to collect submodules for 'torch.testing._internal.opinfo' because importing 'torch.testing._internal.opinfo' raised: ModuleNotFoundError: No module named 'expecttest'
When I try to run the generated executable, the part of application that needs to use transformers to search for text in a data file doesn't run. Also I get the following errors
Exception in thread Thread-2 (import_heavy_libraries):
Traceback (most recent call last):
File "transformers/utils/import_utils.py", line 1817, in _get_module
File "importlib/__init__.py", line 90, in import_module
File "<frozen importlib._bootstrap>", line 1381, in _gcd_import
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 384, in exec_module
File "transformers/generation/utils.py", line 53, in <module>
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 384, in exec_module
File "transformers/generation/candidate_generator.py", line 26, in <module>
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 384, in exec_module
File "sklearn/__init__.py", line 73, in <module>
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 384, in exec_module
File "sklearn/base.py", line 19, in <module>
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 384, in exec_module
File "sklearn/utils/__init__.py", line 15, in <module>
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 384, in exec_module
File "sklearn/utils/_chunking.py", line 11, in <module>
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 384, in exec_module
File "sklearn/utils/_param_validation.py", line 17, in <module>
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 384, in exec_module
File "sklearn/utils/validation.py", line 21, in <module>
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 384, in exec_module
File "sklearn/utils/_array_api.py", line 17, in <module>
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 384, in exec_module
File "sklearn/utils/fixes.py", line 17, in <module>
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 384, in exec_module
File "scipy/stats/__init__.py", line 610, in <module>
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 384, in exec_module
File "scipy/stats/_stats_py.py", line 49, in <module>
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 384, in exec_module
File "scipy/stats/distributions.py", line 8, in <module>
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 384, in exec_module
File "scipy/stats/_distn_infrastructure.py", line 360, in <module>
NameError: name 'obj' is not defined
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "transformers/utils/import_utils.py", line 1817, in _get_module
File "importlib/__init__.py", line 90, in import_module
File "<frozen importlib._bootstrap>", line 1381, in _gcd_import
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 384, in exec_module
File "transformers/models/auto/modeling_auto.py", line 21, in <module>
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 384, in exec_module
File "transformers/models/auto/auto_factory.py", line 40, in <module>
File "<frozen importlib._bootstrap>", line 1406, in _handle_fromlist
File "transformers/utils/import_utils.py", line 1805, in __getattr__
File "transformers/utils/import_utils.py", line 1819, in _get_module
RuntimeError: Failed to import transformers.generation.utils because of the following error (look up to see its traceback):
name 'obj' is not defined
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "threading.py", line 1052, in _bootstrap_inner
File "threading.py", line 989, in run
File "semantic_search.py", line 25, in import_heavy_libraries
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 384, in exec_module
File "sentence_transformers/__init__.py", line 14, in <module>
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 384, in exec_module
File "sentence_transformers/cross_encoder/__init__.py", line 3, in <module>
File "<frozen importlib._bootstrap>", line 1354, in _find_and_load
File "<frozen importlib._bootstrap>", line 1325, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 929, in _load_unlocked
File "PyInstaller/loader/pyimod02_importers.py", line 384, in exec_module
File "sentence_transformers/cross_encoder/CrossEncoder.py", line 14, in <module>
File "<frozen importlib._bootstrap>", line 1406, in _handle_fromlist
File "transformers/utils/import_utils.py", line 1806, in __getattr__
File "transformers/utils/import_utils.py", line 1805, in __getattr__
File "transformers/utils/import_utils.py", line 1819, in _get_module
RuntimeError: Failed to import transformers.models.auto.modeling_auto because of the following error (look up to see its traceback):
Failed to import transformers.generation.utils because of the following error (look up to see its traceback):
name 'obj' is not defined
### RUNNING ELSE ###
Exception in thread Thread-1 (start_event_loop):
Traceback (most recent call last):
File "threading.py", line 1052, in _bootstrap_inner
File "threading.py", line 989, in run
File "gui_main.py", line 39, in start_event_loop
File "asyncio/runners.py", line 194, in run
File "asyncio/runners.py", line 118, in run
File "asyncio/base_events.py", line 664, in run_until_complete
File "gui_main.py", line 52, in initialize_semantic_search
File "semantic_search.py", line 40, in initialize
NameError: name 'SentenceTransformer' is not defined
This is a command I use to generate the executable.
pyinstaller --collect-all transformers my_script.py
I have tried setting the hidden imports both through having the following line of code in .spec file:
hiddenimports=['transformers.generation.utils', 'transformers.models.auto.modeling_auto', 'torch.testing._internal.opinfo']
and setting the --hidden-imoprts parameter when generating executable from the original script.
pyinstaller --hidden-imoprts='transformers.generation.utils' my_script.py
I have also tried different library versions for torch, transformers, tokenizers and sentence transformers for potential incompatibilities. Not helpful.
I wonder why the errors after running the executable is persistent regardless of setting the parameters in the --hidden-imports?