python中每一个 .py文件即为一个模块,当我们想使用第三方模块时,首先则是使用import将模块导入进来,但是import会在哪些路径里寻找模块呢,接下来总结一下:
简单的说我们可以使用一下代码查看模块所在路径:
import sys
print(sys.path)
返回的结果是一个列表,该列表中列出了寻找模块时的路径,列表中的内容基本上来自以下几个来源:
所以,当我们编写好一个.py文件之后,如果我们想在另一个.py文件中import该模块(即.py文件),对应有四种方法可以实现让python解释器找到该模块。
前面3点都很好理解,关于最后一点,以下详细说明:
PTH文件的存放位置在不同的操作系统中有所差异,但是通过site这个内置模块的getsitepackages()函数可以获取正确的位置。如我的电脑显示如下:
可以看见返回了两条路径,我在其中一个路径下面新建workspace.pth文件,然后编写该文件,一行一个路径如:
C:\ProgramData
D:\tmp
以后便是我在该.pth文件里所对应的路径下面编写的模块,在另外的模块中使用import导入时便不会出错了。你可以使用sys.path输出,也会看见C:\ProgramData,D:\tmp这两条路径。
另外:
1. 在Windows中用SET PYTHONPATH = 路径1;路径2的方式来设置PATHONPATH环境变量。
2. 也可以使用如下代码设置:sys.path.append('c:\workspace')
3. 模块查找的顺序为:内存中已经加载的模块–>内置模块–>sys.path路径中包含的模块
当一个模块被import时,会发生以下事情:
1. 在sys.path寻找模块
2. 加载、编译模块的程序代码
3. 创建空的模块对象
4. 在sys.modules中记录该模块
5. 执行模块中的程序代码及相关定义
哈哈,写得比较乱,当然我自己可以看懂,目的也是方便自己以后查阅,要是哪位网友逛到这儿来了,你就将就方便看吧,哈哈。。