我使用 Jupyter Notebook 进行数据分析已经有一段时间了。我想在我的 jupyter 笔记本目录中开发一个模块,并能够将该新模块导入到笔记本中。我的jupyter笔记本文件目录可以表示如下;
Jupyter notebooks\
notebook1.ipynb
new_module\
__init__.py
newfunction.py
currentnotebooks\
notebook2.ipynb
使用时import new_module
在notebook1.ipynb中它可以工作,但是当我在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
已定,但仅此而已。你应该not在笔记本中运行此代码Jupyter notebooks
,因为它会将该目录的父目录添加到 python 路径中,这可能是不可取的。
导入起作用的原因notebook1
sys.path 包含''
(空字符串),它始终是正在运行的解释器(在本例中为内核)的当前目录。谷歌搜索一下explain python path
出现了一些关于 python 如何使用的很好的解释PYTHONPATH
(aka sys.path
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)