1

在很多答案在這裏尋找後,我仍然不知道如何結構,進口Python項目...如何用ipython筆記本構建python項目?

比方說,我的目錄結構是

myproject 
    utils 
     tool1.py 
    datasets 
     create_bla_dataset.py 
    research 
     mynote.ipynb 

現在我導入工具1從create_bla_dataset.py與

# We are in create_bla_dataset.py 
from ..utils import tool1 

... define how to create a dataset 

if __name__ == "__main__": 
    # demo the dataset 

,我可以運行

> cd <dir_contains_myproject> 
> python -m myproject.datasets.create_bla_dataset 
文件

但現在我想導入create_bla_dataset內mynote.ipynb同時用jupyter筆記本打開mynote.ipynb,但我不知道如何...

如果我嘗試from ..datasets import create_bla_dataset,我得到ValueError: attempted relative import beyond top-level package

編輯:我嘗試從各種目錄啓動jupyter筆記本,但沒有運氣,同樣的錯誤。

回答

2

當您使用IPython/Jupyter筆記本時,您需要考慮到ipython服務器僅查看從啓動筆記本實例的位置定義的根目錄中的文件。在這種情況下,可能是直接啓動筆記本文件,而不是從項目根目錄啓動。

此外,您可以使用__init__.py文件。

更新:您可以在筆記本頂部添加一個單元格。

import sys, os 
sys.path.insert(0, os.path.dirname(os.path.abspath('..'))) 

然後,myproject被視爲一個包,您可以按原樣導入。

from myproject.datasets.create_bla_dataset import bar 
bar() 
>>> 'hi foo hi bar' 

這是因爲相對於進口只在包裝工作,如果你需要的包中使用您需要添加哪裏是包的路徑。

+0

我嘗試從各個位置啓動jupyter筆記本,但沒有運氣:( – djma

+0

您需要從myproject啓動儀表板。您是否可以從公共URL中分享一個最小示例? – cosmoscalibur

+0

我也嘗試從'myproject'啓動...你是什​​麼意思,從一個公共URL分享?謝謝! – djma