我正在使用Pycharm开发python包,并希望使用Jupyter笔记本与模块进行交互。
我的项目结构如下:
project/notebooks/my_notebook.ipynb
project/module/__init__.py
project/module/core.py
project/tests/...
我在浏览器中运行my_notebook.ipynb
但无法弄清楚如何导入python模块的内容。像from module import foo
这样的东西不能开箱即用。我来到this blog post,涉及将源代码安装为可编辑的Pip包,但我想知道是否有其他方法可以使其工作而不涉及安装包?
答案 0 :(得分:1)
您只需要将该目录放入笔记本内的路径中:
例如:
import sys
# make sure to use position 1
sys.path.insert(1, "/Users/foo/bar/project/")
from module.core import foo
使用位置1非常重要,因为使用位置0可能会破坏sys.path:docs
还要注意你应该确保你的pycharm项目使用的笔记本使用相同的 virtualenv(或conda env),否则你可能会有意料之外的事情冲突
答案 1 :(得分:0)
我认为将特定路径硬编码到笔记本代码中是一种不良做法。相反,在启动Jupyter笔记本服务器时,我会直接从项目文件夹中将根项目文件夹添加到PYTHONPATH中,就像这样
env PYTHONPATH=`pwd` jupyter notebook
或者如果您是从其他地方启动的,就像这样
env PYTHONPATH=/Users/foo/bar/project/ jupyter notebook