sunny-cheng  

一个文件夹管理多个模块文件,这个文件夹就被称为包,如下:

 

既然是多个模块文件,那么涉及多个模块怎么导入呢?

***当前路径下包之间模块导入:

import wsg

***不同路径下包之间模块导入:

          from proj import mds导入这个模块

1.manege.py 作为入口程序导入

          from crm import vems

       vems.py模块下
     from proj import mds

2.绝对路径导入

    import sys

     sys.append(proj路径(将要导入的模块绝对路径加到本路径。因为有import proj 所以取绝对路径要去掉proj))

3.相对路径导入

import os,sys
os.path.abspath(__file__)#获取绝对路径
BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#获取路径往上走两层
sys.path.append(BASE_DIR)#添加路径
from proj import mds


相对导入

在linux里可以通过cd ..回到上一层目录 ,cd ../.. 往上回2层,这个..就是指相对路径,在python里,导入也可以通过.

package所对应的文件夹必须正确的被python解释器视作package,而不是普通文件夹。否则由于不被视作package,无法利用package之间的嵌套关系实现python中包的相对导入。

文件夹被python解释器视作package需要满足两个条件:

  1. 文件夹中必须有__init__.py文件,该文件可以为空,但必须存在该文件。
  2. 不能作为顶层模块来执行该文件夹中的py文件(即不能作为主函数的入口)。

注:虽然python支持相对导入,但对模块间的路径关系要求比较严格,处理不当就容易出错,so并不建议在项目里经常使用。   

 

posted on 2018-08-22 09:40  sunny-cheng  阅读(1151)  评论(0编辑  收藏  举报