详解Python编程中包的概念与管理


Posted in Python onOctober 16, 2015

Python中的包
包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的Python的应用环境。
考虑一个在Phone目录下的pots.py文件。这个文件有如下源代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
def Pots():
  print "I'm Pots Phone"

  
同样地,我们有另外两个保存了不同函数的文件:

  • Phone/Isdn.py 含有函数Isdn()
  • Phone/G3.py 含有函数G3()

现在,在Phone目录下创建file __init__.py:

Phone/__init__.py

当你导入Phone时,为了能够使用所有函数,你需要在__init__.py里使用显式的导入语句,如下:

from Pots import Pots
from Isdn import Isdn
from G3 import G3

当你把这些代码添加到__init__.py之后,导入Phone包的时候这些类就全都是可用的了。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
# 导入 Phone 包
import Phone
 
Phone.Pots()
Phone.Isdn()
Phone.G3()

以上实例输出结果:

I'm Pots Phone
I'm 3G Phone
I'm ISDN Phone

如上,为了举例,我们只在每个文件里放置了一个函数,但其实你可以放置许多函数。你也可以在这些文件里定义Python的类,然后为这些类建一个包。

Python的包管理工具

Distribute是对标准库disutils模块的增强,我们知道disutils主要是用来更加容易的打包和分发包,特别是对其他的包有依赖的包。
Distribute被创建是因为Setuptools包不再维护了。
安装Distribute
可以通过distribute_setup.py 脚本来安装Distribute,也可以通过easy_install, pip,源文件来安装,不过使用distribute_setup.py来安装是最简单和受欢迎的方式

$ curl -0 http://python-distribute.org/distribute_setup.py
$ sudo python distribute_setup.py

 
Pip 是安装python包的工具,提供了安装包,列出已经安装的包,升级包以及卸载包的功能。
Pip 是对easy_install的取代,提供了和easy_install相同的查找包的功能,因此可以使用easy_install安装的包也同样可以使用pip进行安装。
 
安装Pip
Pip的安装可以通过源代码包,easy_install或者脚本。
下面介绍一下各种安装方法:
源代码方式:

$ wget http://pypi.python.org/packages/source/p/pip/pip-0.7.2.tar.gz (替换为最新的包)
$ tar xzf pip-0.7.2.tar.gz
$ cd pip-0.7.2
$ python setup.py install
easy_install:
$ easy_install pip

get_pip.py 脚本:

$ curl -0 https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$ sudo python get-pip.py

 
OK, 下面来看一下Pip的使用
安装package

$ pip install Markdown

列出安装的packages

$ pip freeze

安装特定版本的package
通过使用==, >=, <=, >, <来指定一个版本号。

$ pip install 'Markdown<2.0'
$ pip install 'Markdown>2.0,<2.0.3'

升级包
升级包到当前最新的版本,可以使用-U 或者 --upgrade

$ pip install -U Markdown

卸载包

$ pip uninstall Markdown

查询包

pip search "Markdown"

 
PS -- 包安装后的py文件路径:

/usr/local/lib/python2.7/dist-packages
Python 相关文章推荐
Python学习笔记_数据排序方法
May 22 Python
python根据文件大小打log日志
Oct 09 Python
跟老齐学Python之重回函数
Oct 10 Python
Python中Class类用法实例分析
Nov 12 Python
Python实现Linux命令xxd -i功能
Mar 06 Python
解决Pycharm运行时找不到文件的问题
Oct 29 Python
Python代码打开本地.mp4格式文件的方法
Jan 03 Python
使用pandas 将DataFrame转化成dict
Dec 10 Python
Python字典添加,删除,查询等相关操作方法详解
Feb 07 Python
使用jupyter notebook直接打开.md格式的文件
Apr 10 Python
在keras里面实现计算f1-score的代码
Jun 15 Python
Python中对象的比较操作==和is区别详析
Feb 12 Python
解读Python编程中的命名空间与作用域
Oct 16 #Python
Python中的模块导入和读取键盘输入的方法
Oct 16 #Python
Python中基本的日期时间处理的学习教程
Oct 16 #Python
简单介绍使用Python解析并修改XML文档的方法
Oct 15 #Python
Python中将字典转换为XML以及相关的命名空间解析
Oct 15 #Python
详细解读Python中解析XML数据的方法
Oct 15 #Python
深入解析Python编程中JSON模块的使用
Oct 15 #Python
You might like
php下使用SimpleXML 处理XML 文件
2010/02/27 PHP
php自定义函数实现二维数组排序功能
2016/07/20 PHP
javascript 常用方法总结
2009/06/03 Javascript
TBCompressor js代码压缩
2011/01/05 Javascript
jquery动态增加删除表格行的小例子
2013/11/14 Javascript
js加入收藏夹代码(兼容ie/ff/op)
2014/05/16 Javascript
Javascript图片上传前的本地预览实例
2014/06/16 Javascript
原生js实现日期联动
2015/01/12 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
javascript精确统计网站访问量实例代码
2015/12/19 Javascript
JS获取当前脚本文件的绝对路径
2016/03/02 Javascript
非常漂亮的相册集 使用jquery制作相册集
2016/04/28 Javascript
Bootstrap实现带动画过渡的弹出框
2016/08/09 Javascript
Angularjs处理页面闪烁的解决方法
2017/03/09 Javascript
JavaScript编写的网页小游戏,很给力
2017/08/18 Javascript
JavaScript中常见内置函数用法示例
2018/05/14 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
2019/05/27 Javascript
package.json配置文件构成详解
2019/08/27 Javascript
详解Python中类的定义与使用
2017/04/11 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
python 实现对文件夹中的图像连续重命名方法
2018/10/25 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
2020/04/10 Python
基于python实现查询ip地址来源
2020/06/02 Python
python 实现汉诺塔游戏
2020/11/28 Python
使用HTML5原生对话框元素并轻松创建模态框组件
2019/03/06 HTML / CSS
介绍一下.net和Java的特点和区别
2012/09/26 面试题
英语专业学子个人的自我评价
2013/10/02 职场文书
机关门卫的岗位职责
2014/04/29 职场文书
出纳试用期自我评价
2015/03/10 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
2015年药店工作总结
2015/04/20 职场文书
关爱留守儿童捐款倡议书
2015/04/27 职场文书
《金钱的魔力》教学反思
2016/02/20 职场文书
2019财务毕业实习报告
2019/06/27 职场文书