详解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数据类型之间的转换
Jun 08 Python
Fabric 应用案例
Aug 28 Python
利用Python代码实现数据可视化的5种方法详解
Mar 25 Python
pandas Dataframe行列读取的实例
Jun 08 Python
Django Aggregation聚合使用方法解析
Aug 01 Python
python对常见数据类型的遍历解析
Aug 27 Python
python如何通过闭包实现计算器的功能
Feb 22 Python
python print 格式化输出,动态指定长度的实现
Apr 12 Python
python 图像插值 最近邻、双线性、双三次实例
Jul 05 Python
PyChon中关于Jekins的详细安装(推荐)
Dec 28 Python
简单介绍Python的第三方库yaml
Jun 18 Python
Python实现双向链表基本操作
May 25 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
2021年最新CPU天梯图
2021/03/04 数码科技
APMServ使用说明
2006/10/23 PHP
php实例分享之html转为rtf格式
2014/06/02 PHP
mac环境中使用brew安装php5.5.15
2014/08/18 PHP
php mysql获取表字段名称和字段信息的三种方法
2016/11/13 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
php实现多站点共用session实现单点登录的方法详解
2019/09/18 PHP
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
js的image onload事件使用遇到的问题
2014/07/15 Javascript
基于jQuery实现的菜单切换效果
2015/10/16 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
2016/01/07 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
JavaScript必知必会(九)function 说起 闭包问题
2016/06/08 Javascript
js发送短信倒计时的简单实现方法
2016/09/08 Javascript
JQuery Ajax WebService传递参数的简单实例
2016/11/02 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
2017/08/22 Javascript
node.js基于express使用websocket的方法
2017/11/09 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
2020/08/06 Javascript
Django在Win7下的安装及创建项目hello word简明教程
2014/07/14 Python
Python中使用摄像头实现简单的延时摄影技术
2015/03/27 Python
Python将多份excel表格整理成一份表格
2018/01/03 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
举例详解CSS3中的Transition
2015/07/15 HTML / CSS
CSS3标注引用的出处和来源的方法
2020/02/25 HTML / CSS
贝嫂喜欢的婴儿品牌,个性化的婴儿礼物:My 1st Years
2017/11/19 全球购物
Foreo国际站:Foreo International
2018/10/29 全球购物
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
2014新年元旦活动策划方案
2014/02/18 职场文书
初中作文评语大全
2014/04/23 职场文书
让世界充满爱演讲稿
2014/05/24 职场文书
计算机系本科生求职信
2014/05/31 职场文书
安全横幅标语
2014/06/09 职场文书
联谊活动总结
2014/08/28 职场文书
部队2015年终工作总结
2015/04/02 职场文书
golang 实用库gotable的具体使用
2021/07/01 Golang