python 模块搜索路径

文章讲述了Python解释器如何在内置模块、sys.path中的目录以及标准库、第三方模块和用户自定义路径中寻找os模块的过程,强调了遇到ImportError时的解决策略。
摘要由CSDN通过智能技术生成

前言

    当我们import os的时候,Python解释器去哪找os模块呢?如果有多处都有os模块,Python解释器使用哪个os模块呢?这是一个重要的知识点:模块搜索路径

    当python解释器找到对应的模块后,将不会再继续查找。举个小栗子:就像你寻找你的另一半,当你找见1个匹配的人,你也不会再继续找了,程序来源于生活嘛

去哪找os模块?

    Python解释器会从2个地方找os模块,它们是:内置模块和sys.path中的每一个目录

1、内置模块

sys.builtin_module_names会返回所有的内置模块

土办法:也可以利用内置属性__path__或者__file__,一般该属性有值的都不是内置模块 

2、sys.path属性中的所有目录中,是个list,会有很多个目录,去每个目录中查找模块文件

sys.path中的目录主要由3部分共同组成

1、执行程序的当前工作目录

比如 python hello.py ,你可以使用pwd看下你的当前工作目录是什么(Linux)

2、PYTHONPATH

环境变量PYTHONPATH,它是个包含所有目录名称的列表,和shell变量 PATH 有一样的语法,它包含的每个目录会拼接到sys.path的list中

3、python解释器安装的默认设置

标准库目录,比如lib目录在此

搜索模块的过程

import baby

1、最先从内置模块中查找(有些模块并不在标准库目录中,属于内置模块,比如sys模块),如果找不到,会继续从sys.path中的每个目录中进行查找

2、继续从 sys.path 所有的目录列表中,会逐个查找每个目录,查找baby模块,找到就不会再就行查找了

3、没找到模块或者模块导入时报错会发生什么?

如果没有找到模块,会抛出ImportError

找到的模块本身异常,会抛出ImportError

Python的模块分类,主要是4个

1、内置模块

sys.builtin_module_names会返回所有的内置模块

2、标准库模块

包括内置模块

标准库模块位于Python安装目录下的`Lib`文件夹中

3、第三方模块

一般都是通过pip install xx 安装的模块

4、自己写的模块

你自己写的.py模块

总结

    python解释器查找模块的过程,如果能熟练掌握的情况,就再也不怕ImportError这个讨厌的错误,记住python搜索模块的规则:

1、python先找内置模块

2、找不到,会再找sys.path下的每一个目录

    如果还是有ImportError的错误,考虑将模块文件添加到sys.path中包含的目录中就行了。

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值