跨目录导入模块及包

示例目录结构:

 

 

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测试模块

 

posted @ 2017-08-16 00:00  炉山假面目  阅读(155)  评论(0编辑  收藏  举报