2015-11-17 78 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代碼中再次讀取數據。 –

回答