【1】报错 ValueError: You may be trying to read with python 3 a joblib pickle generated with python 2. This feature is not supported by joblib.
指的是你尝试使用 Python 3 环境来读取一个由 Python 2 环境生成的 joblib
序列化对象。joblib
是一个用于Python中的并行化和任务调度的库,它使用 pickle
来序列化对象。
【2】解决:
-
使用 Python 2 环境: 如果你有 Python 2 环境可用,直接在 Python 2 环境中加载该
joblib
序列化对象。 -
转换 pickle 文件: 如果可能,尝试在 Python 2 环境中重新生成 pickle 文件,然后在 Python 3 环境中加载它。
-
升级代码: 如果你有源代码,升级代码以确保它与 Python 3 兼容,并重新生成 pickle 文件。
-
使用兼容的库: 如果 pickle 文件是由第三方库生成的,检查该库是否有更新版本支持 Python 3。
-
使用
dill
替代pickle
:dill
是一个可以替代pickle
的库,它支持 Python 2 和 Python 3 之间的序列化兼容性。你可以尝试使用dill.load
来代替pickle.load
。 -
检查
joblib
版本: 确保你使用的joblib
版本与你的 Python 版本兼容。如果需要,升级或降级joblib
。 -
使用 Docker 或虚拟环境: 如果上述方法都不可行,你可以考虑使用 Docker 容器或虚拟环境来运行 Python 2 代码,从而避免影响你的主开发环境。
-
联系 pickle 文件的提供者: 如果 pickle 文件是由外部来源提供的,联系提供者询问是否有 Python 3 兼容的版本。
【3】正确解决:
(1)dill :依旧报错别的
(2)更换python版本:报错无法安装python2:
PackagesNotFoundError: The following packages are not available from current channels:
- python=2.6
解决:删除原有环境,重新安装一个环境,指定安装python版本