我可以在python 3中腌制然后在python 2中进行unpickle吗?

我试图解决的问题如下:我有一个networkxgraph,我想绘制为 circular tree.这需要Graphviz和PyGraphviz或Pydot,它们不适用于Python 3.

我正在考虑在python 3中序列化图形对象的选项,然后在python 2环境中对其进行反序列化,在那里我可以绘制它.然而,我不清楚这种方法的潜在问题是什么,因为我无法假设两个环境中各自的对象相似.

除了实际尝试这个(我目前在我的机器上没有python 2环境),有没有办法找出这是否可能?或者通过导出到不同的格式(例如gephy),甚至可能在python之外进行绘制,只是更有意义地遵循不同的路径?

最佳答案 是的,您可以在Python 3中转储数据以在Python 2中再次加载它.您可能想要设置fix_imports,以及使用低于3的协议.从
pickle.dump() documenation开始:

If fix_imports is true and protocol is less than 3, pickle will try to map the new Python 3 names to the old module names used in Python 2, so that the pickle data stream is readable with Python 2.

Python 2.3 – 2.7支持协议版本2.

但是,请考虑一些替代方案:

>有三个支持Python 3的Graphviz包:

> graphviz module支持Python 3.3及更高版本.
>自2016年7月发布的1.2.0版以来,pydot一直支持Python 3.他们预测tests every commit on Python 3.5.
> PyGraphviz自2015年9月发布的1.3版以来一直支持Python 3.项目tests on 3.5 and 3.6.

>使用不同的序列化格式. JSON应该能够很好地处理图形.

点赞