模块搜索目录
模块搜索目录
当使用import语句导入模块时,默认情况下,会按照以下顺序进行查找:
(1)在当前目录(即执行的Python脚本文件所在目录)查找。
(2)到PYTHONPATH(环境变量)下的每个目录中查找
(3)到Python的默认安装目录下查找。
以上各个目录的具体位置保存在标准模块sys的sys.path变量中。可以通过以下代码输出具体的
目录:
import sys
print(sys.path)
['', 'C:\Users\39713\AppData\Local\Programs\Python\Python37\Lib\idlelib',
'C:\Users\39713\AppData\Local\Programs\Python\Python37\python37.zip',
'C:\Users\39713\AppData\Local\Programs\Python\Python37\DLLs',
'C:\Users\39713\AppData\Local\Programs\Python\Python37\lib',
'C:\Users\39713\AppData\Local\Programs\Python\Python37',
'C:\Users\39713\AppData\Local\Programs\Python\Python37\lib\site-packages']
如果要导入的模块不在所示的目录中,那么在导入模块时,将抛出异常。
注意:使用Import语句导入模块时,模块名是区分字母大小写的。
这时我们可以通过以下3种方式添加到指定的目录到sys.path中。
1.临时添加
临时添加即在导入模块的Python文件种添加,例如,需要将"C:\Users\39713\Desktop\lzx\PY练习"目录添加到sys.path中,可以
使用下面的代码:
import sys
sys.path.append('C:/Users/39713/Desktop/lzx/PY练习')
sys.path
['', 'C:\Users\39713\AppData\Local\Programs\Python\Python37\Lib\idlelib',
'C:\Users\39713\AppData\Local\Programs\Python\Python37\python37.zip',
'C:\Users\39713\AppData\Local\Programs\Python\Python37\DLLs',
'C:\Users\39713\AppData\Local\Programs\Python\Python37\lib',
'C:\Users\39713\AppData\Local\Programs\Python\Python37',
'C:\Users\39713\AppData\Local\Programs\Python\Python37\lib\site-packages',
'C:/Users/39713/Desktop/lzx/PY练习']
此时,输出sys.path即可看到新添加的目录。
说明:通过该方法添加的目录只在执行当前文件的窗口中有效,窗口关闭后即失效。
2.增加.pth文件(推荐)
在Python安装目录下的"Lib\site-packages"子目录中,创建一个扩展名为.pth的文件,文件名任
意。这里创建一个mrpath.pth文件,在该文件中添加要导入模块所在的目录。例如,将模块目录
'C:/Users/39713/Desktop/lzx/PY练习'添加到mrpath.pth文件,在这个pth文件里加入以下内容:
C:\Users\39713\Desktop\lzx\PY练习
注意:创建.pth文件后,需要重新打开要执行的导入模块的Python文件,否则新添加的目录不起
作用。
说明:该方法3.7版本以后有效。
3.在PYTHONPATH环境变量中添加
打开"环境变量"对话框,如果没有PYTHONPATH系统环境变量,则需要先创建一个,否则直接
选中PYTHONPATH变量,单击"编辑"按钮,并且在弹出对话框的"变量值"文本中添加新的模块
目录,目录之前使用逗号进行分隔。例如,创建系统环境变量PYTHONPATH,并指定模块所在
目录为C:\Users\39713\Desktop\lzx\PY练习。
注意:环境变量中添加模块目录后,需要重新打开要执行的导入模块的Python文件,否则新添加的目录不起
作用。