首页 > 解决方案 > 如何使用jupyter设置python路径

问题描述

我的项目结构如下

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, ...>

现在我希望能够在脚本文件夹内的 python 脚本和笔记本文件夹内的笔记本中访问我的主库

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 文件在交互式 shell 中不存在。在这里,我不完全确定如果我在某处更改 cwd 会发生什么,毕竟在我的笔记本开头有这种混乱是有点不可取的。

3)

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

谢谢你的建议,马特

标签: pythonpackagejupyter-notebookipython

解决方案


推荐阅读