使用Pyinstaller打包SpaCy模型:E050找不到模型

2024-01-08

我正在使用 Pyinstaller 来打包我的 python spacy 代码。我正在使用 de_core_news_sm 并通过 pip 安装它。 正常脚本按预期执行,但是一旦用 pyinstaller 打包,它就找不到模型[E050] Can't find model 'de_core_news_sm'. It doesn't seem to be a Python package or a valid path to a data directory.我为每个钩子得到一个文件:

from PyInstaller.utils.hooks import collect_all

# ----------------------------- blis -----------------------------
data = collect_all('blis')
datas = data[0]
binaries = data[1]
hiddenimports = data[2]
from PyInstaller.utils.hooks import collect_all

# ----------------------------- cymen -----------------------------
data = collect_all('cymem')
datas = data[0]
binaries = data[1]
hiddenimports = data[2]
from PyInstaller.utils.hooks import collect_data_files
datas = collect_data_files("de_core_news_sm")
from PyInstaller.utils.hooks import collect_all

# ----------------------------- preshed -----------------------------
data = collect_all('preshed')
datas = data[0]
binaries = data[1]
hiddenimports = data[2]
from PyInstaller.utils.hooks import collect_all

# ----------------------------- SPACY -----------------------------
data = collect_all('spacy')
datas = data[0]
binaries = data[1]
hiddenimports = data[2]
from PyInstaller.utils.hooks import collect_all

# ----------------------------- thinc -----------------------------
data = collect_all('thinc')
datas = data[0]
binaries = data[1]
hiddenimports = data[2]

我使用以下 pyinstaller 命令:

pyinstaller script.py --hidden-import cmath --hidden-import srsly.msgpack.util

在这篇文章中[1]:使用PyInstaller打包时找不到SpaCy模型 https://stackoverflow.com/questions/66495437/cant-find-spacy-model-when-packaging-with-pyinstaller/66523115#66523115

这是从模块添加数据文件的解决方案。那么我必须如何更改 script.py 运行时文件中的代码以及如何更改挂钩文件?

顺便说一句,我在虚拟环境中使用:spacy 3.0.6、pyinstaller 4.3 和 python 3.8.0。

谢谢 !


将其添加到我的运行时脚本中可以解决问题。我不是将其作为模块加载,而是从路径加载模型

from pathlib import Path
bundle_dir = Path(__file__).parent.absolute()
source_nlp = spacy.load(bundle_dir / "de_core_news_sm")

以及收集所有 de_core_news_sm 数据的钩子文件

from PyInstaller.utils.hooks import collect_data_files
datas = collect_data_files("de_core_news_sm")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Pyinstaller打包SpaCy模型:E050找不到模型 的相关文章

随机推荐