python - 如何使用 ipython notebooks 构建 python 项目?

标签 python import jupyter-notebook python-import

在这里看了很多答案后,我仍然不明白如何使用导入构建一个 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 notebook 打开 mynote.ipynb 的同时在 mynote.ipynb 中导入 create_bla_dataset,但我不知道如何......

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

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

最佳答案

当您使用 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'

这是因为相对导入只适用于包,如果你需要作为包使用,你需要添加包所在的路径。

关于python - 如何使用 ipython notebooks 构建 python 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45723751/

相关文章:

python - python2中的dict_proxy和python3中的mappingproxy有什么区别?

python - 已发布的 pypi 包显示在搜索中,但不会 pip install

python - 在 Python 中节省内存。如何迭代行并使用 200 万行文件有效地保存它们?

python导入和作用域

import - Webpack/typescript 需要工作但导入不

linux - 为 jupyter 笔记本安装 Cling 内核时出错

python - 如何使用谷歌云自动化我的 jupyter 笔记本?

python - 规范化字典值

python - 如果它们在姐妹文件夹中,如何让我的 Python 单元测试导入被测试的模块?

python - 无法从 anaconda 打开 jupyter 笔记本