? ? 当我们import os的时候,Python解释器去哪找os模块呢?如果多处都有os模块,选择哪个os模块呢?
? ? Python解释器不是很神奇,它会从以下2个地方找os模块
1、内置模块
sys.builtin_module_names会返回所有的内置模块
土办法:也可以利用内置属性__path__或者__file__,一般该属性有值的都不是内置模块?
2、sys.path属性中的所有目录中,是个list,会有很多个目录
import baby
1、同名的内置模块(有些模块并不在标准库目录中,属于内置模块,比如sys模块,用c语言写的……)
2、从?sys.path?所有的目录列表中,逐个查找每个目录,查找名为baby的模块,不一定是.py文件
1、没有找到,会抛出ImportError
2、找到的模块本身异常,也会抛出ImportError
1、内置模块
sys.builtin_module_names会返回所有的内置模块
2、标准库模块
包括内置模块
标准库模块位于Python安装目录下的`Lib`文件夹中
3、第三方模块
一般都是通过pip install xx 安装的模块
4、自己写的模块
你自己写的.py模块
? ? python解释器查找模块的过程,如果能熟练掌握的情况,你就再也不怕ImportError这个讨厌的错误,如果大家不理解,建议再读一遍,同时作以下练习,看看模块搜索路径都有,你要找的模块在不在这些目录中呢?
import sys
print(sys.path)