python下的跨目录import操作
在使用C++语言进行项目开发时,如果需要调用其他目录的头文件时,直接#include "xxx/xxx/xxx/xxx.h"就可以实现,但是在python下的用法不大一样。
下级目录中的模块导入
这个最简单,也最常见。假设目录格式如下,运行的是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以上已经失效!!!
找到的链接:
python import 上级目录的导入_python
python中import上级sys.path.append(‘…‘) 失效
我亲测使用Python3.9是跑不通的,仍然报错:找不到模块
最后实现的可用写法如下:
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 | 为环境变量增加一个路径 |
从其他目录导入
如果需要从其他目录导入模块,则需要执行类似上面的操作,增加环境变量后导入。文章来源:https://www.toymoban.com/news/detail-628733.html
import sys
sys.path.append(xxx) # 添加yyy模块所在目录xxx
import yyy
关于python中的import操作,这篇文章写得挺好:[Python] 再研究一下Python的import机制文章来源地址https://www.toymoban.com/news/detail-628733.html
到了这里,关于【python】python下的跨目录import模块的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!