为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

素胚勾勒不出你 2022-12-06 15:36:17
作为应用程序构建的我的脚本在尝试加载 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 模型数据文件。我已经在有数据和没有数据的情况下对此进行了测试,所以我很确定这就是问题所在。
查看完整描述

3 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

你用 IDLE 测试过你的程序吗?可能存在pickle解码错误...如果没有,请尝试使用此代码创建您的 exe。它会导入您计算机上的所有库。它更长,但更容易:只需运行一个文件。


无论如何,更好的用户PyInstaller(也是 PyPI 上可用的模块) -相关堆栈溢出答案


查看完整回答
反对 回复 2022-12-06
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

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



查看完整回答
反对 回复 2022-12-06
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

我 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表达式就不必是双通配符(如上所述)。


如果这不能立即奏效,我还建议添加一个MANIFEST.in明确命名二进制数据文件的文件


查看完整回答
反对 回复 2022-12-06
  • 3 回答
  • 0 关注
  • 103 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信