参考
python导入的模块搜索顺序详解(python import搜寻模块的机制详解):https://blog.csdn.net/qq_27825451/article/details/100552739
import sys
sys.path
'''返回的列表为:
['', # 运行程序的根目录
'D:\\ProgramData\\Anaconda3\\envs\\pytorch1.2.0\\python36.zip', # 这几个是python标准库目录
'D:\\ProgramData\\Anaconda3\\envs\\pytorch1.2.0\\DLLs',
'D:\\ProgramData\\Anaconda3\\envs\\pytorch1.2.0\\lib',
'D:\\ProgramData\\Anaconda3\\envs\\pytorch1.2.0',
'C:\\Users\\Administrator\\AppData\\Roaming\\Python\\Python36\\site-packages',
'D:\\ProgramData\\Anaconda3\\envs\\pytorch1.2.0\\lib\\site-packages' # 最后面这个是第三方模块所在的目录
]
'''
'''
# 注意:这里是没有设置PYTHONPATH 环境变量的路径值的,也没有创建.pth文件
'''
在 Python 中,内建模块(Built-in Module)是指 Python 安装包中自带的一组模块,这些模块提供了基础的、通用的功能和工具,可以广泛地应用于各种 Python 程序开发中,比如字符串操作、文件IO、数学计算、正则表达式、日期时间处理、网络通讯等等。内建模块在 Python 解释器启动时就已经加载到内存中,可以直接使用,无需安装或引入。
Python 内建模块的数量非常多,绝大部分常用的模块被归类为核心模块(常用的有:math, sys, os, re, json, random 等),另外还有一些常用的标准库模块(常用的有:datetime, collections, itertools, argparse, logging 等)属于标准模块,这些标准模块都是 Python 安装包自带的。
当你想使用内建模块时,只需要直接在 Python 的解释器中或者 Python 程序中调用即可,不需要先进行安装或者引入操作。例如,使用内建模块 math 进行数学计算,只需要在 Python 中输入:
import math
print(math.sqrt(2))
这个例子中,我们使用内建模块 math
的 sqrt()
函数对 2 进行求平方根,在 Python 程序中无需其他引入,直接调用 math 模块即可。
总结:
python搜索模块的顺序为如下:
内建模块 >
程序的根目录(即当前运行python文件的目录)>
PYTHONPATH环境变量设置的目录>
标准库的目录>
任何能够找到的*.pth文件的内容>
第三方扩展的site-package目录
python代码里面包的引入顺序是怎么样的
python代码里面包的引入顺序是怎么样的,假如当前目录有同名的包,是先引入当前目录的包,还是直接取虚拟环境里面取
在 Python 中,包的引入顺序是按照 sys.path
中的路径列表顺序来进行的。sys.path
是 Python 程序运行时默认的搜索路径,其中包括以下路径:
- 当前脚本所在目录
- 操作系统环境变量
PYTHONPATH
中包含的路径 - Python 安装路径下的标准库路径(通常在
/usr/lib/python3.7/
或/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/
) - Python 搜索路径中定义的第三方库路径
当你在 Python 程序中导入一个包时,Python 会按照上述路径列表顺序搜索该包,直到找到最先出现的包版本为止,而后续的搜索将自动忽略该包。因此,如果当前目录中有同名的包,且在 sys.path
中该路径出现在虚拟环境的路径之前,Python 将会先搜索到当前目录中的包,并引入其中的模块,而不是虚拟环境中的包。
如果要确保 Python 引入的是虚拟环境中的包,可以在程序的开头明确指定虚拟环境路径,例如:
import sys
sys.path.insert(0, '/path/to/virtual/env')
这样可以将虚拟环境的路径加入到 sys.path
列表的最前面,确保 Python 引入的是虚拟环境中的包。