【问题标题】:How does jupyter notebook import modules which are not in the current working directory?jupyter notebook 如何导入不在当前工作目录中的模块?
【发布时间】:2019-08-21 22:54:59
【问题描述】:

我正在尝试了解导入在 jupyter 笔记本中的工作原理。 我目前的工作目录是“家/用户名”。我有三个 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

【问题讨论】:

    标签: python import jupyter-notebook anaconda


    【解决方案1】:

    这更多的是关于 python 本身的工作原理。

    您应该能够使用from folder import module2 导入module2。您应该通过创建一个空白初始化文件/home/username/folder/__init__py/home/username/folder 声明为一个包。我建议将包命名为更独特的名称,例如 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 文件。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2017-01-11
        • 2020-05-18
        • 2020-02-21
        • 2021-01-14
        • 2020-08-30
        • 2020-11-03
        • 2018-10-07
        • 2021-10-04
        • 1970-01-01
        相关资源
        最近更新 更多