python - 如何使用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。
谢谢你的建议,马特
解决方案
推荐阅读
- javascript - 全屏显示文档正文为空
- active-directory - 更改现有 AD 记录的显示名称时的通知
- javascript - 如何将新的键值插入现有的 JSON 对象数组?
- c++ - 调用类变量多次初始化的析构函数序列
- scala - Azure Databricks 并发作业 - 避免在所有作业中使用相同的 eventthub 消息
- javascript - addEventListener() 中 console.log() 的异常行为 - JAVASCRIPT
- typescript - 扩展一个`记录
` 具有不同类型的属性 - android - 在哪里可以找到已安装的 Android SDK 源代码的所有类?
- sql - 如何将 Oracle Sql 转换为 Postgresql
- c - 比较已定义和未定义的变量