当你导入一个模块,Python 解析器搜索模块的顺序是:
- 当前目录
- shell 变量(windows环境变量) PYTHONPATH 记录的每个目录。
- 默认路径:
– UNIX:/usr/local/lib/python/
– Windows:C:\Users\username\AppData\Local\Programs\Python
– sys.path:保存默认搜索位置的变量(包含:PYTHONPATH、当前目录、安装过程决定的默认目录)
参考链接:https://www.runoob.com/python/python-modules.html
当前(同级)文件夹
folder1
|- - mod1.py
|- - mod2.py
import
import module1[, module2[,... moduleN]]
'''mod1.py'''
import mod2
var = mod2.name()
from…import
from modname import name1[, name2[, ... nameN]]
'''mod1.py'''
from mod2 import name
var = name()
或
from modname import *
( 极 不 推 荐 )
'''mod1.py'''
from mod2 import *
var = name()
var1 = name1()
下级文件夹(子目录)
folder1
|- - mod1.py
|- - folder2
|- - |- - __init__.py
|- - |- - mod2.py
- 首先在需导入的模块的所在文件夹建立一个名为 “__init__.py” 的特殊 Python 文件,这样 Python 解释器会把该文件视为 Python包(package),导入时只需再添加包名就好了
- 导入
from packagename import modname[, modname[, ... modnameN]]
'''mod1.py'''
from floder2 import mod2
var = mod2.name()
或
from packagename.modname import name1[, name2[, ... nameN]]
'''mod1.py'''
from floder2.mod2 import name
var = mod2.name()
上级文件夹(父目录)
folder1
|- - __init__.py
|- - mod1.py
|- - folder2
|- - |- - __init__.py
|- - |- - mod2.py
导入上级文件夹的模块时就稍微麻烦一点。
注:同样的,请先确保该模块所在目录有 __init__.py
因为 Python解释器会一一搜索 sys.path 记录的目录,所以:
import sys
sys.path.append('你要导入的包所在目录')
from packagename import modname[, modname[, ... modnameN]]
'''D:/python/folder1/floder2/mod2.py'''
import sys
sys.path.append('D:/python')
from folder1 import mod1
var = mod1.name()
此用法每次运行程序时都把指定路径添加到 Python 解释器的默认搜索路径中,程序结束后不会保存。
当然,还有 永久性 方法,就是设置 PYTHONPATH 环境变量:
Windows:
win+r --> cmd -> set PYTHONPATH=c:\python27\lib;
UNIX:
set PYTHONPATH=/usr/local/lib/python
感谢看到这里,相信现在无论导入什么模块对你来说都是轻而易举。