下级目录中的模块导入
目录格式如下,运行的是father.py,希望在father.py中import son.py:
'''
--path_test(文件夹)
|--father.py
|--children(文件夹)
|--son.py
'''
import children.son
上级目录中的模块导入
当前运行的是文件层级较深的son.py,想要导入上级的father.py,在Python版本小于3.6.7前,做法如下:
'''
--path_test(文件夹)
|--father.py
|--children(文件夹)
|--son.py
'''
import sys
sys.path.append('..')
import son
一个 . 号代表从当前包导入,两个 … 代表从上一级包导入,三个 … 代表从更上一级。
但是 这个方法在Python 3.6.7以上已经失效
可用写法如下:
import os
dir_path = os.path.dirname(os.path.realpath(__file__)) # 获取当前目录
parent_dir_path = os.path.abspath(os.path.join(dir_path, os.pardir)) # 获取上级目录
import sys
sys.path.append(parent_dir_path) # 添加上级目录
import father
其中:
代码 | 含义 |
---|---|
os.path.realpath(file) | 获取当前文件的完整路径(包括文件名) |
os.path.dirname | 获取路径,去掉文件名 |
os.pardir | 上一层路径,即’··/’ |
os.path.join | 路径字符串拼接 |
os.path.abspath | 返回绝对路径,可以把’xxx/yyy/zzz/··/'返回为‘xxx/yyy/’ |
sys.path.append | 为环境变量增加一个路径 |
从其他目录导入
如果需要从其他目录导入模块,则需要执行类似上面的操作,增加环境变量后导入。
import sys
sys.path.append(xxx) # 添加yyy模块所在目录xxx
import yyy
参考:
https://blog.csdn.net/guozhibin123/article/details/128307371
https://zhuanlan.zhihu.com/p/523734078