Python程序中import模块是的搜索顺序如下:
(1)首先导入内建模块:首先判断这个module是不是built-in即内建模块,如果是内建模块则引入内建模块(内建模块是随着解释器一起的,因此我们不用关注)。
(2)在sys.path返回的列表中寻找:如果不是内建模块,则在sys.path的list中寻找;sys.path在Python脚本执行时动态生成,它返回的是一个列表,这个列表包含了以下几部分。包括以下5个部分:
- 程序的根目录(即当前运行Python文件的目录)
- PYTHONPATH环境变量设置的目录
- 标准库的目录
- 任何能够找到的.pth文件的内容
- 第三方扩展的site-package目录
以Linux平台为例:
>>> import sys >>> sys.path ''' ['', # 当前目录 '/usr/local/python3/lib/python37.zip', # python标准库目录 '/usr/local/python3/lib/python3.7', '/usr/local/python3/lib/python3.7/lib-dynload', '/usr/local/python3/lib/python3.7/site-packages' # 第三方库所在的目录 ]
在代码中手动添加搜索路径到sys.path所返回的列表中
既然前面说过sys.path返回的是一个列表,而且这个列表是动态执行的时候确定的,所以我们可以在编写代码的时候在代码最前面添加某一些需要的搜索路径到sys.path里面如下:
你可以通过以下方法获取和设置环境变量:os.environ
:
import os user_home = os.environ["HOME"] os.environ["PYTHONPATH"] = "..."
或
import sys sys.path.append("...")
但是我们一般不太推荐这样做!!!