Как загрузить модель рассола при использовании cx_freeze? - PullRequest
3 голосов
/ 26 мая 2020

Мой сценарий, созданный как приложение, перестает работать, когда он пытается загрузить данные модели рассола. Ниже приводится код проблемы: c:

with open('model_pickle','rb') as f:
    mp = pickle.load(f)

Это установочный файл, который я использую:

setup(
    name="Test",
    version="1.0",
    options={"build_exe":{"include_files":["model_pickle"]}},
    executables=[target]
)

Программа работает должным образом при выполнении python сценарий. Однако после преобразования его в исполняемый файл через cx_freeze проблема заключается в открытии файла данных модели pickle. Я тестировал это с данными и без них, поэтому уверен, что проблема именно в этом.

Ответы [ 3 ]

1 голос
/ 03 июня 2020

Вы можете импортировать модель следующим образом: model = pickle.load(open('MODEL_PATH','rb')). Надеюсь, это сработает!

1 голос
/ 04 июня 2020

Я на 99,99% уверен, что вам нужно также добавить файл model_pickle к вашему вызову setup(…) в качестве данных пакета, чтобы он работал как исполняемый файл. Вот фрагмент setup.py, показывающий параметры данных пакета:

from setuptools import setup, find_packages

PROJECT_NAME = 'my_project' # this should reflect your package structure

setup(
    # …
    packages=[package for package in find_packages() \
                       if package.startswith(PROJECT_NAME)],

    package_dir={ 'my_project' : 'my_project' },
    package_data={ '' : ['*.*'] },
    include_package_data=True,
    zip_safe=True,
    # …
)

Кроме того, на вашем месте я бы переименовал файл данных во что-то вроде model_pickle.pkl, чтобы ваше выражение package_data не t должен иметь двойной подстановочный знак (как указано выше).

Если это сразу не сработает, я бы также рекомендовал добавить MANIFEST.in файл , который явно называет ваш файл двоичных данных.

0 голосов
/ 29 мая 2020

Вы тестировали свою программу с IDLE? Возможно, это ошибка декодирования pickle ... Если нет, попробуйте использовать этот код для создания вашего exe. Он импортирует все библиотеки, которые есть на вашем компьютере. Это дольше, но проще: запускается всего один файл.

...