Упаковка модели SpaCy с Pyinstaller: E050 Не могу найти модель

Я использую Pyinstaller для упаковки моего пространственного кода на Python. Я использую 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]: Не могу найти SpaCy модель при упаковке с PyInstaller

это решение с добавленными файлами данных из модулей. Итак, как мне изменить свой код в моем файле времени выполнения script.py и как мне изменить файлы ловушек?

Кстати, я использую: spacy 3.0.6, pyinstaller 4.3 и python 3.8.0 в моей виртуальной среде.

Спасибо !

См. также:  Как узнать, присутствует ли файл в нескольких ветках в git
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. jre_joe

    Добавление этого в мои сценарии выполнения решает проблему. Вместо того, чтобы загружать его как модуль, я загружаю свою модель из пути

    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")
    
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: