我正在使用Jupyter Notebook编写一些 Python 3.4
代码,但我必须加载一个用 Python 2.7
编写的类 .
我真的(或想要)将所有代码升级到 Python 3.4
. 在其余代码中,该类的使用非常有限,仅用于返回与 Python 3.4
兼容的一些数据 .
我有两个问题:
-
有什么方法可以在
Python 2.7
中运行单个单元格,然后在整个笔记本脚本中使用该单元格的输出? -
如果没有,你有什么建议吗?
Desired usage:
+++++ Python 2.7 cell +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
In[1]: #load the class
my_class = MYCLASS()
#use the class to get 3.4 compatible data
data_list = my_class.produce_data()
+++++ Python 3.4 cell ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
In[2]: #use the data list in a 3.4 way
for x in data_list:
print(x)
我发现了一个类似的问题,Calling Python 2 script from Python 3,但除了评论中的几个黑客之外,没有提供真正的解决方案 .
NOTE :这个问题与Using both Python 2.x and Python 3.x in IPython Notebook完全无关,它是关于如何使用这两种语言而不是如何引用另一种语言 .
1 回答
重新作为答案:
如果您安装了两个版本的Python,则可以将
%%python2
放在单元格的顶部以在Python 2中运行它 . 但是,该代码将在单独的进程中运行,因此您需要将数据写出来(例如,使用pickle)然后在Python 3代码中再次读取它 .%%python2
魔法的文档在这里:http://ipython.readthedocs.org/en/stable/interactive/magics.html#cellmagic-python2