Jam*_*per 22 python ipython python-import python-3.x jupyter-notebook
我已经使用jupyter笔记本进行数据分析了很长一段时间.我想在我的jupyter notebook目录中开发一个模块,并能够将新模块导入到笔记本中.我的jupyter笔记本文件目录可以表示如下;
Jupyter notebooks\
notebook1.ipynb
new_module\
__init__.py
newfunction.py
currentnotebooks\
notebook2.ipynb
Run Code Online (Sandbox Code Playgroud)
当import new_module在notebook1.ipynb中使用时,它可以正常工作,当我在notebook2.ipynb中尝试相同的命令时,我得到以下内容ImportError: No module named 'new_module'.两个明显的解决方案是A)将new_module移动到currentnotebooks目录或B)将notebook2.ipynb移动到与new_module相同的级别.我根本不想乱用文件结构.这可能吗?
cco*_*cco 38
您需要确保父目录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)
Run Code Online (Sandbox Code Playgroud)
如果您在目录层次结构中更进一步,则需要调整nb_dir设置的方式,但这就是全部.你应该不是在运行的笔记本电脑这个代码Jupyter notebooks,因为这将是目录的父目录添加到Python路径中,这可能是不可取的.
导入的原因notebook1是sys.path包含''(空字符串),它远离正在运行的解释器的当前目录(在本例中为内核).谷歌搜索找到explain python path了python如何使用PYTHONPATH(又名sys.path)的几个很好的解释.