繁体   English   中英

如何使用ipython笔记本构建python项目?

[英]How to structure a python project with ipython notebooks?

在这里查看了许多答案之后,我仍然不了解如何使用导入来构造python项目...

假设我的目录结构是

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

现在我从create_bla_dataset.py导入tool1

# 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

但是现在我想在用jupyter笔记本打开mynote.ipynb时在mynote.ipynb中导入create_bla_dataset,但是我不知道如何...

如果我尝试from ..datasets import create_bla_dataset尝试from ..datasets import create_bla_dataset ValueError: attempted relative import beyond top-level package

编辑:我尝试从各种目录启动jupyter笔记本,但是没有运气,同样的错误。

使用IPython / Jupyter Notebook时,需要考虑到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'

这是因为相对导入仅在程序包中起作用,如果需要用作程序包,则需要在程序包所在的位置添加路径。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM