我使用 jupyter notebook 进行数据分析已经有一段时间了。我想在我的 jupyter notebook 目录中开发一个模块,并能够将该新模块导入到笔记本中。我的jupyter notebook文件目录可以表示如下;
Jupyter notebooks\
notebook1.ipynb
new_module\
__init__.py
newfunction.py
currentnotebooks\
notebook2.ipynb
当在 notebook1.ipynb 中使用 import new_module
时,它可以工作,但是当我在 notebook2.ipynb 中尝试相同的命令时,我得到以下 ImportError: No module named 'new_module'
.两个明显的解决方案是 A) 将 new_module 移动到当前笔记本目录或 B) 将 notebook2.ipynb 移动到与 new_module 相同的级别。我根本不想弄乱文件结构。这可能吗?
最佳答案
您需要确保 new_module
的父目录在您的 python 路径中。对于比 new_module
低一级的笔记本,此代码可以解决问题:
import os
import sys
nb_dir = os.path.split(os.getcwd())[0]
if nb_dir not in sys.path:
sys.path.append(nb_dir)
如果您在目录层次结构中更靠后,则需要调整 nb_dir
的设置方式,仅此而已。您应该不在 Jupyter notebooks
中为笔记本运行此代码,因为它会将该目录的父目录添加到 python 路径,这可能是不可取的。
notebook1
导入的原因是 sys.path 包含 ''
(空字符串),它远离正在运行的解释器的当前目录(内核, 在这种情况下)。谷歌搜索 explain python path
可以找到关于 python 如何使用 PYTHONPATH
(又名 sys.path
)的几个很好的解释。
关于python - 如何将 jupyter notebook 目录中的模块导入到较低目录的 notebook 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39299838/