2016-07-20 200 views
0

Python relative imports for the billionth time解決方案:交互式Python - 相對進口

  • 對於from .. import工作,因爲有在import聲明模塊的名字必須至少有儘可能多的點。
  • ...如果你交互式運行解釋......這交互式會話的名稱是__main__
  • 因此,你不能直接做相對進口交互式會話

我喜歡用互動Jupyter筆記本在編寫產品代碼之前探討數據和測試模塊。爲了讓隊友清楚和易於理解,我喜歡將筆記本放在位於我正在測試的封裝和模塊旁邊的interactive包中。

package/ 

    __init__.py 

    subpackage1/ 

     __init__.py 

     moduleX.py 

     moduleY.py 

     moduleZ.py 

    subpackage2/ 

     __init__.py 

     moduleZ.py 

    interactive/ 
     __init__.py 
     my_notebook.ipynb 

期間interactive.my_notebook.ipynb交互式會話,你會怎麼導入其他模塊,如subpackage1.moduleXsubpackage2.moduleZ

回答

2

我目前使用的解決方案是父包追加到sys.path

import sys 
sys.path.append("/Users/.../package/") 

import subpackage1.moduleX 
import subpackage2.moduleZ 
+1

我認爲將'package'的父目錄添加到'sys.path'會更有意義。這樣你總是可以從package.subpackageN import moduleZ執行'' – theorifice