如何使用jupyter

时间:2018-11-07 14:01:31

标签: python package jupyter-notebook ipython

我的项目结构如下

project_name/
    project_name/
        __init__.py
        sub_package1/
            __init__.py
            some_module1.py
        sub_package2/
            __init__.py
            some_module2.py
    scripts/
        some_script.py
    notebooks/
        some_notebook.py
    top level files <requirements.txt, .gitignore, README.md, ...>

现在,我希望能够在scripts文件夹中的python脚本中以及在notebooks文件夹中的笔记本中以以下方式访问我的主库

from project_name.sub_package1 import some_module1

实现此目标的最佳方法是什么?
我提出了一些想法:

1)

在我的笔记本文件夹中,创建一个包含内容的文件context.py

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

然后,我可以在笔记本电脑上做

from context import project_name  

然后从那里开始工作。可以,但是当然可以在不使用上下文的情况下直接导入project_name会更好。

2)

在笔记本中执行

notebook_dir = os.path.split(os.getcwd())[0]
if notebook_dir not in sys.path:
    sys.path.insert(0, notebook_dir)

因为在交互式外壳程序中不存在dunder文件。在这里,我不完全确定如果在某个地方更改cwd会发生什么,毕竟在笔记本的开头出现这种混乱情况是不希望的。

3)

将project_name根文件夹添加到python路径。如果可以通过非硬编码的方式完成此操作,那就太好了。我使用pyenv和pyenv virtualenv。

感谢您的建议, 马特

0 个答案:

没有答案