最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

python 3.x - Executable generated from pyinstaller in MacOS gives error - Stack Overflow

programmeradmin4浏览0评论

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?

发布评论

评论列表(0)

  1. 暂无评论