跨目录导入模块

Posted 炉山假面目

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跨目录导入模块相关的知识,希望对你有一定的参考价值。

示例目录结构:

 

 

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

 

以上是关于跨目录导入模块的主要内容,如果未能解决你的问题,请参考以下文章

导入模块方式(尽量少用from xx import *)以及包的定义,跨目录运行包和模块(未完)

Python 跨目录导入文件问题

Python全栈之路----常用模块----包及跨模块导入

跨模块和全局变量的 Python 导入

包及跨模块导入

我可以跨同一个 python 包的模块重用导入吗?