python导入的模块搜索顺序详解(python import搜寻模块的机制详解)

344 篇文章 10 订阅
291 篇文章 2 订阅

参考

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))

这个例子中,我们使用内建模块 mathsqrt() 函数对 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 引入的是虚拟环境中的包。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值