如何将jupyter笔记本目录中的模块导入到较低目录的笔记本中? [复制]

2024-04-18

我使用 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 路径中,这可能是不可取的。

导入起作用的原因notebook1sys.path 包含''(空字符串),它始终是正在运行的解释器(在本例中为内核)的当前目录。谷歌搜索一下explain python path出现了一些关于 python 如何使用的很好的解释PYTHONPATH (aka sys.path).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将jupyter笔记本目录中的模块导入到较低目录的笔记本中? [复制] 的相关文章