Jupyter Notebook如何导入不在当前工作目录中的模块?

时间:2019-03-31 18:03:55

标签: python import jupyter-notebook anaconda

我试图了解jupyter笔记本中导入的工作方式。 我当前的工作目录是“ home / username”。我有三个python模块。

这些模块的路径名称如下。

  1. "/home/username/module1.py"
  2. "/home/username/folder/module2.py"
  3. "/home/username/anaconda3/lib/python3.7/os.py"(这是内置的python模块)

Jupyter笔记本

单元格1: import module1 效果很好

单元格2: import module2ModuleNotFoundError: No module named 'module2'

单元格3: import os 效果很好

似乎可以毫无问题地导入工作目录中的模块。因此,可以导入module1.py。不是软件包的其他目录中的模块不能直接导入。因此,module2.py引发错误。但是如果是这种情况,如何直接导入os.py(不是工作目录或同一目录中的另一个包中的文件)?

2 个答案:

答案 0 :(得分:1)

这实际上是关于python本身如何工作的更多信息。

您应该可以使用module2导入from folder import module2。您应该通过创建一个空白的初始化文件/home/username/folder来声明/home/username/folder/__init__py为包。我建议为软件包命名更独特的名称,例如potrus_folder,这样一来您就不会出现命名冲突。

解释:Python跟踪其路径中可用的模块,通常在环境变量中进行设置。要查看查找模块的文件夹,可以先执行import sys,然后执行print(sys.path)。默认情况下,将以最高优先级包含您的工作目录(/home/username/)(因此,它应该位于sys.path的第一个或最后一个,我不记得了)。您可以使用sys.path.append('/some/folder')添加自己的文件夹,尽管该文件夹不受欢迎,您应该将其真正添加到系统路径中,或者仅将其作为软件包保存在工作目录中。

包实际上只是已添加的路径的子文件夹。正如我之前解释的那样,您可以使用from X import Y语法来访问它们,或者如果您想更深入from X.Z import Y来访问它们。记住__init__.py文件。

答案 1 :(得分:0)

os库的路径在环境中设置* 每当您输入import时,它都会搜索环境+ pwd中添加的所有目录,因此您只需将目录添加到环境中就可以了

默认情况下,/ home / username / anaconda3 / lib / python3.7 /默认是在安装时添加的,因为大多数模块都位于该位置,但是您也可以添加urs