我试图了解jupyter笔记本中导入的工作方式。 我当前的工作目录是“ home / username”。我有三个python模块。
这些模块的路径名称如下。
"/home/username/module1.py"
"/home/username/folder/module2.py"
"/home/username/anaconda3/lib/python3.7/os.py"
(这是内置的python模块)Jupyter笔记本
单元格1:
import module1
效果很好
单元格2:
import module2
给
ModuleNotFoundError: No module named 'module2'
单元格3:
import os
效果很好
似乎可以毫无问题地导入工作目录中的模块。因此,可以导入module1.py
。不是软件包的其他目录中的模块不能直接导入。因此,module2.py
引发错误。但是如果是这种情况,如何直接导入os.py
(不是工作目录或同一目录中的另一个包中的文件)?
答案 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