Невозможно найти модель SpaCy при упаковке с помощью PyInstaller.Python

Программы на Python
Ответить
Anonymous
 Невозможно найти модель SpaCy при упаковке с помощью PyInstaller.

Сообщение Anonymous »

Я использую PyInstaller, упаковываю скрипт Python в .exe. Этот скрипт использует пространство для загрузки следующей модели: en_core_web_sm. Я уже запустил python -m spacy download en_core_web_sm, чтобы загрузить модель локально. Проблема в том, что когда PyInstaller пытается упаковать мой скрипт, он не может найти модель. Я получаю следующую ошибку: Невозможно найти модель «en_core_web_sm». Похоже, это не пакет Python или правильный путь к каталогу данных. Я подумал, возможно, это означает, что мне нужно запустить команду загрузки в моем скрипте Python, чтобы убедиться, что у него есть модель, но если у меня есть сценарий, загружающий модель, он просто говорит, что требования уже удовлетворены. У меня также есть файл-перехватчик, который обрабатывает скрытый импорт и также должен вводить модель:

Код: Выделить всё

from PyInstaller.utils.hooks import collect_all, collect_data_files

datas = []
datas.extend(collect_data_files('en_core_web_sm'))

# ----------------------------- SPACY -----------------------------
data = collect_all('spacy')

datas.extend(data[0])
binaries = data[1]
hiddenimports = data[2]

# ----------------------------- THINC -----------------------------
data = collect_all('thinc')

datas.extend(data[0])
binaries += data[1]
hiddenimports += data[2]

# ----------------------------- CYMEM -----------------------------
data = collect_all('cymem')

datas.extend(data[0])
binaries += data[1]
hiddenimports += data[2]

# ----------------------------- PRESHED -----------------------------
data = collect_all('preshed')

datas.extend(data[0])
binaries += data[1]
hiddenimports += data[2]

# ----------------------------- BLIS -----------------------------

data = collect_all('blis')

datas.extend(data[0])
binaries += data[1]
hiddenimports += data[2]

# ----------------------------- STDNUM -----------------------------

data = collect_all('stdnum')

datas.extend(data[0])
binaries += data[1]
hiddenimports += data[2]

# ----------------------------- OTHER -------------------------------

hiddenimports += ['srsly.msgpack.util']
Я использую следующий код для загрузки модели, а затем для упаковки сценария с помощью PyInstaller:

Код: Выделить всё

os.system('python -m spacy download en_core_web_sm')
PyInstaller.__main__.run([path_to_script, '--onefile', '--additional-hooks-dir=.'])
Скрипт Hook-spacy.py находится в том же каталоге, что и сценарий, упаковываемый PyInstaller.
Все это работает, если я запустите скрипт локально. Модель находит как надо. Я получаю эту ошибку только в том случае, если пытаюсь упаковать сценарий с помощью PyInstaller и попытаться запустить .exe.
Я использую Python v3.8.7, PyInstaller v4.2 и spacy v3. 0.3 с en_core_web_sm v3.0.0

Подробнее здесь: https://stackoverflow.com/questions/664 ... yinstaller
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»