执行pyinstaller命令后,一般都会在项目根目录生成一个.spec的文件,现在基于该文件进行修改。
Q:为什么不在pyinstaller命令修改?
S:命令修改不直观,且文件中可以执行python代码,方便处理大批量数据
现象1:
出现类似问题,就是项目过大,打包深度超出预设
=============================================================
A RecursionError (maximum recursion depth exceeded) occurred.
For working around please follow these instructions
=============================================================
1. In your program's .spec file add this line near the top::
import sys ; sys.setrecursionlimit(sys.getrecursionlimit() * 5)
2. Build your program by running PyInstaller with the .spec file as
argument::
pyinstaller myprog.spec
3. If this fails, you most probably hit an endless recursion in
PyInstaller. Please try to track this down as far as possible,
create a minimal example so we can reproduce and open an issue at
https://github.com/pyinstaller/pyinstaller/issues following the
instructions in the issue template. Many thanks.
Explanation: Python's stack-limit is a safety-belt against endless recursion,
eating up memory. PyInstaller imports modules recursively. If the structure
how modules are imported within your program is awkward, this leads to the
nesting being too deep and hitting Python's stack-limit.
With the default recursion limit (1000), the recursion error occurs at about
115 nested imported, with limit 2000 at about 240, with limit 5000 at about
660.
解决:
# .spec文件中添加
import sys ; sys.setrecursionlimit(sys.getrecursionlimit() * 5)
现象2:
这个报错是无法加载到Crypto.Cipher相关包的内容导致的
OSError: Cannot load native module 'Crypto.Cipher._raw_ecb': Not found '_raw_ecb.cpython-310-x86_64-linux-gnu.so', Not found '_raw_ecb.abi3.so', Not found '_raw_ecb.so'
解决:
参考我的另一篇内容:https://blog.youkuaiyun.com/Types_c/article/details/147380644?spm=1001.2014.3001.5501
现象3:
出现包导入失败的问题
import sentence_transformers
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 450, in exec_module
File "sentence_transformers/__init__.py", line 14, 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 450, in exec_module
File "sentence_transformers/cross_encoder/__init__.py", line 3, 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 450, in exec_module
File "sentence_transformers/cross_encoder/CrossEncoder.py", line 19, in <module>
File "<frozen importlib._bootstrap>", line 1075, in _handle_fromlist
File "transformers/utils/import_utils.py", line 1955, in __getattr__
File "transformers/utils/import_utils.py", line 1969, in _get_module
RuntimeError: Failed to import transformers.models.auto because of the following error (look up to see its traceback):
解决:
.spec datas 下添加对应的包,例如:
('yourpath/python3.10/site-packages/transformers/models/auto/*','transformers/models/auto/')
现象4:
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/_MEItO35DO/transformers/models/aria'
解决:
参考现象3的解决方式,把对应的文件打包到transformers/models/aria文件夹下即可。
现象5:
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):
No module named 'sklearn.metrics._pairwise_distances_reduction._datasets_pair'
解决:
hiddenimports中添加sklearn.metrics._pairwise_distances_reduction._datasets_pair对应的module,named后就是module的名称,复制添加就行
现象6:(重点)
import requests,大部分人第一时间在hiddenimports添加报错的依赖,都会发现还是报错,在datas和hiddenimport添加了requests也没有解决
from .embeddings import ( # noqa: F401
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 450, in exec_module
File "dbgpt/rag/embedding/embeddings.py", line 6, in <module>
import requests
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 450, in exec_module
File "requests/__init__.py", line 164, 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 450, in exec_module
File "requests/api.py", line 11, 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 450, in exec_module
File "requests/sessions.py", line 15, 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 450, in exec_module
File "requests/adapters.py", line 81, in <module>
FileNotFoundError: [Errno 2] No such file or directory
解决:
# 在datas中添加*.dist-info文件,基本解决
('/yourpath/site-packages/requests-2.32.3.dist-info/*','requests-2.32.3.dist-info/')
dist-info它为包的安装、管理和分发提供了标准化的元数据存储和管理方式,基本类似问题报错,只要你能找到对应的.dist-info文件夹,90%是这个导致的
大家还有什么问题和解决方案可以沟通一下!!!!!
3249

被折叠的 条评论
为什么被折叠?



