模块的查找顺序是:内存中已经加载的模块->内置模块->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:UsersAdministratorPycharmProjectspython19期day5a') 再执行,就可以调用m.py内部的代码。
也可以insert,放置在最前,优先加载。
还有一个更简单的方法:
from a import m a可以找到,因为它和执行文件在同一目录下,顺着a就可以找到里面的m.py
附图: