gpt4 book ai didi

python-3.x - 用 Pyinstaller 打包 SpaCy 模型 : E050 Can't find model

转载 作者:行者123 更新时间:2023-12-05 03:42:17 26 4
gpt4 key购买 nike

我正在使用 Pyinstaller 打包我的 python spacy 代码。我正在使用 de_core_news_sm 并通过 pip 安装它。正常脚本按预期执行,但一旦使用 pyinstaller 打包,它就找不到模型 [E050] 找不到模型“de_core_news_sm”。它似乎不是 Python 包或数据目录的有效路径。我为每个钩子(Hook)得到了一个文件:

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] 中:Can't find SpaCy model when packaging with PyInstaller

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

顺便说一句,我在我的虚拟环境中使用: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数据的钩子(Hook)文件

from PyInstaller.utils.hooks import collect_data_files
datas = collect_data_files("de_core_news_sm")

关于python-3.x - 用 Pyinstaller 打包 SpaCy 模型 : E050 Can't find model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67354667/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com