在Python和IronPython之间传递pickle

在Python和IronPython之间传递pickle,python,clr,ironpython,pickle,importerror,Python,Clr,Ironpython,Pickle,Importerror,我很难在Python中加载一个在IronPython中转储的pickle 当我在IronPython中pickle一些基本的东西,如“[1,2,3]”时,pickle在Python中加载良好。但是,当我在IronPython中从下面的DB查询中pickle结果时,我在尝试在Python中加载pickle时得到错误“No module named clr” 可能出了什么问题?(Python和IronPython之间是否有更好的数据共享方式?) pickle确实是python之间共享数据的一种很好的

我很难在Python中加载一个在IronPython中转储的pickle

当我在IronPython中pickle一些基本的东西,如“[1,2,3]”时,pickle在Python中加载良好。但是,当我在IronPython中从下面的DB查询中pickle结果时,我在尝试在Python中加载pickle时得到错误“No module named clr”

可能出了什么问题?(Python和IronPython之间是否有更好的数据共享方式?)


pickle确实是python之间共享数据的一种很好的通用方法(当您可以信任数据并且知道数据没有被篡改时)。但它只适用于简单的内置类型。当您有特殊类型的对象时(例如,
GetData()
的结果是什么),pickling将嵌入类的完全限定名,只希望另一端的python知道如何找到该类并重新实例化它。不用说,如果你不小心,这会变得非常混乱


尝试将您的
results1
results2
值转换为简单类型,如元组、dict、列表等(可能是嵌套的)。

您正在清理的数据不是由通用Python对象组成的,而是一些依赖于实现的对象
clr
是一个特定于IronPython的模块,因为它的名称意味着与.NET的连接。看看你的数据,我猜这可能与你的datetime对象有关

尝试对序列化数据使用datetime以外的格式,如UNIX历元时间:

import time
results['Date'] = time.mktime(datetime.datetime(MyReader[1]).timetuple())

看起来您的IronPython安装可能安装了模块
clr
,而您的Cpython安装没有。这是正确的。CLR是特定于.NET的,不能作为常规Python的一部分使用。看起来这些都是基元类型,所以应该不会有问题。如果可能的话,您可以在上打开问题并附加pickle文件吗?我想知道涉及哪些类型。
import time
results['Date'] = time.mktime(datetime.datetime(MyReader[1]).timetuple())