如何将 jupyter notebook 目录中的模块导入到较低目录中的笔记本中?
How do I import module in jupyter notebook directory into notebooks in lower directories?
我用jupyter notebook做数据分析已经有一段时间了。我想在我的 jupyter 笔记本目录中开发一个模块,并能够将该新模块导入到笔记本中。我的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 包含 ''
(空字符串),它远离 运行ning 解释器的当前目录(内核,在这种情况下)。 google 搜索 explain python path
可以找到关于 python 如何使用 PYTHONPATH
(又名 sys.path
)的几个很好的解释。
我用jupyter notebook做数据分析已经有一段时间了。我想在我的 jupyter 笔记本目录中开发一个模块,并能够将该新模块导入到笔记本中。我的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 包含 ''
(空字符串),它远离 运行ning 解释器的当前目录(内核,在这种情况下)。 google 搜索 explain python path
可以找到关于 python 如何使用 PYTHONPATH
(又名 sys.path
)的几个很好的解释。