原标题:详解python模块路径查找规则及定义

在python中创建一个模块非常简单,只需要在当前目录下创建一个 .py文件即可,系统自动将其解析成模块,文件名就是模块名。很多我们源码时代的同学都认为在查找模块时优先使用当前目录下的自定义模块。其实不然,接下来我们一起来看看python模块路径查找规则以及如何自定义模块路径。

在详细解析python查找模块的路径时,我们先来了解一下python中有些什么样的模块。在python中,模块主要有:

内建模块(built-in):在安装python解析器时就自动安装,不以文件形式存在

系统标准模块:安装python时自动安装,默认放在 /Lib/目录下

第三方模块:可以使用pip命令进行安装和管理,默认放在/Lib/site-packages/目录下

自定义模块:自己写的模块,可以放在当前目录,也可以放在任意其它位置

查看模块路径可以通过 sys.modules 属性实现。

python获取模块下所有对象 python 获取模块路径_优先级

这些模块在引入和使用时一视同仁,只不过默认查找的顺序是不一样的。python在查找时也有先后顺序,同名的模块如果优先级高则更先被查找到并使用。接下来我们按优先级从高到低给大家一一解析。

内建模块(built-in)

内建模块就是系统内置的模块,在引入模块时最优先被使用,比如:sys、math、time等模块,

我们可以举例说明,在当前目录下创建一个 math.py的文件,再引入math模块。其实使用到的还是系统的内建模块,说明内建模块的优先级高于当前文件夹下的自定义模块。

python获取模块下所有对象 python 获取模块路径_python获取模块下所有对象_02

python获取模块下所有对象 python 获取模块路径_python获取模块下所有对象_03

自定义模块

除了系统内建模块以外,其它所有模块都是以文件形式存在,优先级由 sys.path 列表的先后位置确定。

python获取模块下所有对象 python 获取模块路径_建模_04

自定义模块可以写在当前文件夹下,而当前文件夹是sys.path 的第一个值,所以优先级较高,仅次于内建模块

系统标准模块

系统标准模块不需要单独安装,在安装python解析器时就自动安装好了,存在于python程序目录下的 Lib目录中。

python获取模块下所有对象 python 获取模块路径_python_05

第三方模块

第三方模块是由pip命令安装和管理的模块,存在于安装程序的 Lib目录下的site-packages目录中。

python获取模块下所有对象 python 获取模块路径_优先级_06

今天我们给大家详解python模块路径查找规则及定义就说到这里了,其实除了内建模块以外,其它模块的优先级都是可以调整的,只在修改 sys.path 列表的先后顺序就行了。