将pickle从Python传递到IronPython-cPickle.UnpicklingError:操作码无效:x

将pickle从Python传递到IronPython-cPickle.UnpicklingError:操作码无效:x,python,pickle,ironpython,Python,Pickle,Ironpython,这里是铁蟒的新手 我正在尝试加载使用Python创建的IronPython中的pickle文件。下面是pickle是如何创建的: from sklearn.gaussian_process import GaussianProcessRegressor import joblib gp = GaussianProcessRegressor() joblib.dump(gp, 'krigingModel.pkl') joblib.dump(joblib.load('krigingModel.pk

这里是铁蟒的新手

我正在尝试加载使用Python创建的IronPython中的pickle文件。下面是pickle是如何创建的:

from sklearn.gaussian_process import GaussianProcessRegressor
import joblib

gp = GaussianProcessRegressor()
joblib.dump(gp, 'krigingModel.pkl')
joblib.dump(joblib.load('krigingModel.pkl'), 'krigingModelp2.pkl', 2)
下面是我在IronPython中加载pickle的尝试:

import cPickle as pickle

filename = 'krigingModelp2.pkl'
infile = open(filename, 'rb')
new_dict = pickle.load(infile)
infile.close()
print new_dict
这将导致以下错误:

cPickle.UnpicklingError: invalid opcode: x

有人能解释一下吗?

导出使用的是哪种Python版本?IronPython可能不支持相同的pickle协议。只是使用协议2更新了原始的后期导出,因为3在IronPython中导致了此错误:ValueError:unsupported pickle protocol:3wird,尽管–操作码
x
似乎不是什么(
x
is):
x
可以是joblib扩展。你能在IronPython中使用
joblib.load()
吗?为什么要重新加载和转储pickle文件,而不是使用协议2转储原始对象?@AKX据我所知,IronPython不支持joblib