python的包管理方式

转载 2016年05月31日 14:54:36

转自 http://hi.baidu.com/nkhzj/blog/item/a6f0df00b2c39716728b65f1.html

模块包:

包通常总是一个目录,目录下为首的一个文件便是 __init__.py。然后是一些模块文件和子目录,假如子目录中也有 __init__.py 那么它就是这个包的子包了。差不多就像这样吧:

假定我们的包的例子有如下的目录结构:
Phone/
    __init__.py
    common_util.py
    Voicedta/
        __init__.py
        Pots.py
        Isdn.py
    Fax/
        __init__.py
        G3.py
    Mobile/
        __init__.py
        Analog.py
        igital.py
    Pager/
        __init__.py
        Numeric.py

Phone 是最顶层的包,Voicedta 等是它的子包。 我们可以这样导入子包:
  1. import Phone.Mobile.Analog
  2. Phone.Mobile.Analog.dial()
你也可使用 from-import 实现不同需求的导入。

第一种方法是只导入顶层的子包,然后使用属性/点操作符向下引用子包树:
  1. from Phone import Mobile
  2. Mobile.Analog.dial('555-1212')
此外,我们可以还引用更多的子包:
  1. from Phone.Mobile import Analog
  2. Analog.dial('555-1212')
事实上,你可以一直沿子包的树状结构导入:
  1. from Phone.Mobile.Analog import dial
  2. dial('555-1212')
在我们上边的目录结构中,我们可以发现很多的 __init__.py 文件。这些是初始化模块,from-import 语句导入子包时需要用到它。 如果没有用到,他们可以是空文件。 程序员经常忘记为它们的包目录加入 __init__.py 文件,所以从 Python 2.5 开始,这将会导致一个 ImportWarning 信息。

不过,除非给解释器传递了 -Wd 选项,否则它会被简单地忽略。

包同样支持 from-import all 语句:
  1. from package.module import *
然而,这样的语句会导入哪些文件取决于操作系统的文件系统。所以我们在__init__.py 中加入 __all__ 变量。该变量包含执行这样的语句时应该导入的模块的名字。它由一个模块名字符串列表组成.。

相关文章推荐

BOM的管理方式

  • 2017年07月08日 11:07
  • 610KB
  • 下载

操作系统进程管理方式模拟

  • 2011年11月25日 12:47
  • 3KB
  • 下载

spring学习笔记(7)——spring事务管理方式

spring事务管理有两种方式:一种是传统的编程式事务管理,即通过编写代码实现事务的管理,包括定义事务的开始、程序正常执行后事务提交、异常时进行事务回滚。 另一种是基于AOP技术实现的声明式事务,其...

三种存储管理方式的地址换算

  • 2009年12月10日 08:40
  • 143KB
  • 下载

创建表空间+rename重命名+修改管理方式+resize大小

普通表空间 新建表空间test11,数据文件为/u01/oracle/oradata/primary/primary/test11.dbf SQL> createtablespace test1 ...

Linux操作系统的存储管理方式

  • 2015年06月15日 20:55
  • 26KB
  • 下载

fragment俩种管理方式

  • 2016年05月08日 17:10
  • 2.75MB
  • 下载

分页存储管理方式

离散分配方式 连续分配存储管理方式产生的问题: 要求连续的存储区碎片问题 变连续分配为离散分配,允许将作业离散放到多个不相邻接的分区中。 分页式存储管理:离散分配的基本单位是页...

关于学生考勤的管理方式

  • 2009年06月25日 16:21
  • 37KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python的包管理方式
举报原因:
原因补充:

(最多只允许输入30个字)