Python-模块的搜索路径

模块的查找顺序是:内存中已经加载的模块->内置模块->sys.path路径(导模块的环境变量)中包含的模块(如:time.py文件)

内置模块:

import time,sys
print(sys)

<module 'sys' (built-in)>

创建一个time.py

print('from time')

然后

import time
time.sleep(3)

得到的结果是:执行的是内置time函数的功能。

# 查看执行文件的环境变量
import
sys print(sys.path) ['/Users/gxqlcx/PycharmProjects/youngboy/week05', '/Users/gxqlcx/PycharmProjects/youngboy', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages']

首先是执行文件的当前目录;以下面为主,其实没有上一级youngboy目录,pycharm的问题,所以建议用cmd看。

clouddeMacBook-Pro:~ gxqlcx$ python3 /Users/gxqlcx/PycharmProjects/youngboy/week05/6模块的搜索路径.py
['/Users/gxqlcx/PycharmProjects/youngboy/week05', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages']
clouddeMacBook-Pro:~ gxqlcx$ 

按照这个路径依次找下去,越靠前越优先。这里的.zip可以看成和文件夹一样的目录;

只要模块文件放在上面任意路径,都可以import加载到内存中,使用它。

如果imprt a文件夹下的m.py呢?

将a的目录加载到syspath中:

import sys
sys.path.append(r'C:\Users\Administrator\PycharmProjects\python19期\day5\a')

再执行,就可以调用m.py内部的代码。

也可以insert,放置在最前,优先加载。

还有一个更简单的方法:

from a import m

a可以找到,因为它和执行文件在同一目录下,顺着a就可以找到里面的m.py

 附图:

posted @ 2017-10-19 23:40  大雄猫  阅读(4239)  评论(0编辑  收藏  举报