龙空技术网

python引用外部代码的import机制

慕课python 386

前言:

现在咱们对“pythonimport上层”大约比较看重,兄弟们都需要剖析一些“pythonimport上层”的相关知识。那么小编在网摘上搜集了一些有关“pythonimport上层””的相关资讯,希望大家能喜欢,大家快快来学习一下吧!

【导读】使用import导入额外代码经常报错?看完文章完美解决。

▍目录

python引用外部代码的方式绝对导入和相对导入结尾

▍python引用代码的方式

Python中引入代码包的方式包括绝对导入和相对导入两种方式。这种导入方式可以使用importfrom...import语句来实现。在Python中,import语句会按照一定的搜索路径来查找要导入的模块。搜索路径是一个包含了多个目录的列表,可以通过sys.path变量来查看。

具体的搜索路径如下:

当前目录:即执行脚本所在的目录PYTHONPATH环境变量包含的目录标准库安装目录下的site-packages子目录标准库安装目录下的其他子目录

程序会按照这个顺序依次搜索要导入的模块,如果找到了就直接导入,否则会抛出ImportError异常。

▍绝对导入和相对导入

在了解 绝对导入和相对导入之前,必须了解一个概念,什么是python的主模块?

在 Python 中,主模块指的是直接被 Python 解释器执行的模块。它被用来指定程序入口,也就是程序从哪里开始执行。当一个 Python 脚本被直接执行时,该脚本就成为了主模块。当我们在一个Python脚本中直接运行该脚本时,__name__变量的值为"__main__";而当我们在其他Python脚本中导入该模块时,__name__变量的值就是该模块的名称

哪些情况必须使用绝对导入?

Python的主模块在引用其它代码时都必须使用绝对导入。主模块的同级模块引用其它文件的时候也必须使用绝对导入。

哪些情况可以使用相对导入?

相对导入只能在包中使用,并且必须显式地指定要导入的模块名称。相对导入只能导入相对主模块下的次级目录结构下的模块代码。

相对导入语法:

.package:代表导入同级模块

..package:代表导入上层模块

...package:代表导入上上层模块

举个例子,假设我们的目录结构如下所示:

当main.py作为主模块被执行时,main.py引用fileA代码的方式有:

绝对导入:

from packA import fileA

import packA.fileA

相对导入:

在主模块中不可以使用相对导入的方式

当main.py作为主模块被执行时,fileB1引用fileA中代码的方式有。

绝对导入:

from packB import fileA

import packB.fileA

相对导入:

from .. import fileA

import ..fileA

当main.py作为主模块执行时,fileB1引入fileB2中代码的方式有。

绝对导入:

from packB import fileB2

相对导入:

from . import fileB2

import .fileB2

当fileB1.py作为主模块执行时,fileB1引入fileA中代码的方式有:

绝对导入:

from packA import fileA

相对导入:

在主模块中不可以使用相对导入的方式

▍结尾

关注慕课python,实时掌握精彩文章推送,文章中有任何问题欢迎评论区讨论交流。

标签: #pythonimport上层