2015-11-17 50 views
0

我使用Jupyter Notebook来编写一些Python 3.4代码,但我必须加载已写入Python 2.7的类。从python 3.4加载python 2.7类jupyter笔记本

我想加载的课程不是由我编写的,所以我不能真正(或想要)将所有代码升级到Python 3.4。在其他代码中,该类的使用非常有限,仅用于返回一些与Python 3.4兼容的数据。

我有2个问题:

  • 有什么办法,我可以在Python 2.7运行单个单元格,然后用整个笔记本脚本的其余部分是电池的输出?
  • 如果没有,你有什么建议吗?

所需的使用:

+++++ 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,但没有真正的溶液,除了在评论一对夫妇黑客提供。

注意:这个问题是完全无关的Using both Python 2.x and Python 3.x in IPython Notebook,这是有关如何使用这两种语言,而不是有关如何引用一个来自其他。

+1

你能在你的'的Python 2.7'类运行'2to3'? – davejagoda

+0

@davejagoda - 它不是非常直观,有多个文件,你也必须使用cython编译才能使用它,我认为链接到一些2.7库。 – Matteo

+2

如果你安装了两个版本的Python,你可以在单元的顶部放置'%% python2'来在Python 2中运行它。但是,这些代码将在一个单独的进程中运行,所以你需要编写(例如使用[pickle](https://docs.python.org/3/library/pickle.html)),然后在Python 3代码中再次读取数据。 –

回答