pyinstaller打包Transformers 报错No such file or directory

问题描述

Traceback (most recent call last):
File "transformers\utils\import_utils.py", line 1086, in get_module
File "importlib_init.py", line 127, in import_module
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
File "transformers\models\clip\processing_clip.py", line 21, in <module>
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
File "transformers\processing_utils.py", line 30, in <module>
File "transformers\utils\import_utils.py", line 1115, in direct_transformers_import
File "<frozen importlib._bootstrap_external>", line 724, in exec_module
File "<frozen importlib._bootstrap_external>", line 859, in get_code
File "<frozen importlib._bootstrap_external>", line 916, in get_data
FileNotFoundError: [Errno 2] No such file or directory: 'D:\workspace\python\xiSearch-flet\dist\main\transformers\init.py'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "main.py", line 12, in <module>
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
File "views\app_layout.py", line 18, in <module>
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
File "utils\sentence_transformer_utils.py", line 16, in <module>
File "sentence_transformers\SentenceTransformer.py", line 95, in init
File "sentence_transformers\SentenceTransformer.py", line 840, in _load_sbert_model
File "sentence_transformers\models\CLIPModel.py", line 82, in load
File "sentence_transformers\models\CLIPModel.py", line 15, in init
File "transformers\utils\import_utils.py", line 1077, in getattr
File "transformers\utils\import_utils.py", line 1076, in getattr
File "transformers\utils\import_utils.py", line 1091, in _get_module
RuntimeError: Failed to import transformers.models.clip.processing_clip because of the following error (look up to see its traceback):
[Errno 2] No such file or directory: 'D:\workspace\python\xiSearch-flet\dist\main\transformers\init.py'

解决方法

修改 .spec 文件,添加以下内容:

datas += collect_data_files('transformers', include_py_files=True, includes=['**/*.py'])

参考

https://github.com/pyinstaller/pyinstaller/issues/7646

### 解决 PyInstaller 打包含 XGBoost 应用程序时的常见问题 当使用 PyInstaller 将包含 XGBoost 的 Python 程序打包成可执行文件时,可能会遇到诸如 `Cannot find XGBoost Library` 或者 `super() has no attribute 'get_params'` 这样的错误[^1][^2]。 #### 错误分析与解决方案 对于无法找到 XGBoost 库的情况: - **确认依赖库路径**:确保环境中已安装并配置好 XGBoost 及其所有必要的依赖项。如果是在 Windows 上操作,则需特别注意 DLL 文件的位置以及环境变量设置是否正确。 ```bash pip install xgboost ``` 针对 `super() has no attribute 'get_params'` 类型的问题: - **版本兼容性检查**:此问题是由于某些特定版本间的不匹配所引起的,在 sklearn 和 XGBoost 版本之间可能存在接口差异。建议升级至最新稳定版或回退到之前能正常工作的组合版本来规避此类冲突。 为了更有效地处理这些问题,可以采取以下措施: - 使用隐藏导入选项让 PyInstaller 明确知道要包含哪些模块; - 修改 spec 文件以手动指定额外的数据文件和二进制资源; 具体实现方法如下所示: 创建自定义 hook-script 来显式声明所需加载的内容: ```python from PyInstaller.utils.hooks import collect_submodules, collect_data_files hiddenimports = collect_submodules('xgboost') datas = collect_data_files('xgboost') ``` 编辑 .spec 文件中的 Analysis 部分增加上述信息: ```python a = Analysis(['your_script.py'], pathex=[], binaries=None, datas=datas, hiddenimports=hiddenimports, ... ) ``` 最后重新构建项目即可尝试解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值