猿问

使用 cx_freeze 时如何加载 pickle 模型?

作为应用程序构建的我的脚本在尝试加载 pickle 模型数据时停止工作。以下是有问题的代码:


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 模型数据文件。我已经在有数据和没有数据的情况下对此进行了测试,所以我很确定这就是问题所在。


素胚勾勒不出你
浏览 104回答 3
3回答

犯罪嫌疑人X

你用 IDLE 测试过你的程序吗?可能存在pickle解码错误...如果没有,请尝试使用此代码创建您的 exe。它会导入您计算机上的所有库。它更长,但更容易:只需运行一个文件。无论如何,更好的用户PyInstaller(也是 PyPI 上可用的模块) -相关堆栈溢出答案

一只斗牛犬

您可以按如下方式导入模型。model = pickle.load(open('MODEL_PATH','rb'))希望这会起作用!

慕无忌1623718

我 99.99% 肯定您还需要将该model_pickle文件setup(…)作为包数据添加到您的调用中,以便它作为可执行文件工作。这是setup.py显示包数据选项的片段:from setuptools import setup, find_packagesPROJECT_NAME = 'my_project' # this should reflect your package structuresetup(    # …    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表达式就不必是双通配符(如上所述)。如果这不能立即奏效,我还建议添加一个MANIFEST.in明确命名二进制数据文件的文件。
随时随地看视频慕课网APP

相关分类

Python
我要回答