python - 如何将 jupyter notebook 目录中的模块导入到较低目录的 notebook 中?

标签 python python-3.x ipython python-import jupyter-notebook

我使用 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/

相关文章:

python - IPython 笔记本 : using quotes (') and dollar($) to pass string variable as argument to python script in command-line(!) | eg: abc.py -arg1 ' $var1'

python - 如何从虚拟环境中运行全局安装的 Jupyter?

python - 从 bash 脚本运行 Python 导致自定义模块导入错误

python - 如何将子目录与 Ruffus 管道一起使用

python - 在 Jupyter Notebook 中的 %matplotlib inline 之后使用 %matplotlib notebook 不起作用

python - 如何在使用python匹配条件后从列表的开始迭代开始for循环

python-3.x - 是否可以在 Python (Spyder) 中更新内联图?

python - 是否有python函数可以为python代码字符串生成字节码?

python - 在Python中解析文本并返回不匹配括号的列表

python - Pandas 'DataFrame' 对象没有属性 'map'