2018年3月27日星期二

python3的包导入

python3包导入机制



导言

    在今天的编程中,有关于包导入出错的情况再次出现,所以我决定写个blog来理清自己的思路,有些事情不仅要记下来,还要说出去,这样,有助于自己记忆力和逻辑的通顺。


实例分析

    1. MainModule同级目录

    package
        |
        +--a.py
        |   |
        |   +--class Module
        |
        +--Main.py
        我的做法
    from package.a import Module
    from .a import Module "是错误的"
     

    2.MainModule上级目录

    +--Mian.py
    |
    +--package
        |
        +--a.py
           |
           +--class Module
        我的做法
    from package.a import Module
    from /.package.a import Module
    from .package.a import Module"是错误的"
     

    3.MainModule 下级目录

    +--package
    |    |
    |    +--Main.py
    |
    +--a.py
         |
         +--class Module
       我的做法  
    from app.a import Module
    from ..a import Module "在某种情况下是对的,但是单看Main在此类情况下是错的"
    

    4.MainModule 处于不同的package

    /app
      |
      +--package1
      |   |
      |   +--Main.py
      |
      +--package2
          |
          +--a.py
              |
              +--class Module
      我的做法
    from app.package2.a import Module
    
       

    5.万能法介绍

    /app
    |  |
    |  +--package1
    |  |   |
    |  |   +--Main.py
    |  |
    |  +--a.py
    |      |
    |      +--class Module
    |
    +--manage.py
    
         
    我的做法:
    "在manager中"
    from app.package.a import Module
    "在这种情况下,main.py中导入a 可以使用from ..a import Module"
    "如果真的无法判断如何导入的情况下,从Module和Main的父目录导入总是没错的"
    from a_parent.a && main_parent.a_parent.a import Module

     

总结:


  1. 我还是没有介绍相对导入和绝对导入,自己谈的东西,还是很浅薄的一层,只是现在够用而已。
  2. 事无小事,平常如果就有注意到细节的话,这写东西在用到的时候就不会耽误自己那么久的时间去寻找答案。



引用:

没有评论:

发表评论