跨目录导入模块及包
示例目录结构:
1. 通过os模块获取文件所在的绝对路径
2. 获取文件的父级目录的绝对路径
3. 通过sys模块将获取到的绝对路径加入到环境变量中
4. 导入模块或包
以下为在sz.py文件中通过导入core的main_sz模块执行conf下settings.py中的代码演示
#!/usr/bin/env python #_*_ coding: utf-8 _*_ # 这个是 sz.py 文件 import os,sys BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0,BASE_DIR) from core import main_sz
#!/usr/bin/env python #_*_ coding: utf-8 _*_ # 这个是 main_sz 文件 import os,sys BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0,BASE_DIR) import conf conf.settings.sz_setting() #from conf import settings #使用和上面一样from导入的方法就不需要在__init__.py中进行导入了 #settings.sz_setting()
# 这个是与 settings.py 同级的 __init__.py 文件 from . import settings
#!/usr/bin/env python #_*_ coding: utf-8 _*_ # 这个是 settings.py 文件 print("This is setting module") def sz_setting(): print("欢迎使用setting测试模块")
执行结果如下:
This is setting module
欢迎使用setting测试模块
博主小学未毕业,请勿口喷!