详解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实现Tab自动补全和历史命令管理的方法
Mar 12 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
Jun 13 Python
python 与GO中操作slice,list的方式实例代码
Mar 20 Python
python版本的仿windows计划任务工具
Apr 30 Python
详解Django的CSRF认证实现
Oct 09 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
Dec 10 Python
对python实现二维函数高次拟合的示例详解
Dec 29 Python
Python Pexpect库的简单使用方法
Jan 29 Python
Python正则表达式实现简易计算器功能示例
May 07 Python
Python异常模块traceback用法实例分析
Oct 22 Python
如何使用Python多线程测试并发漏洞
Dec 18 Python
基于Python模拟浏览器发送http请求
Nov 06 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
用ODBC的分页显示
2006/10/09 PHP
中英文字符串翻转函数
2008/12/09 PHP
PHP获取文件绝对路径的代码(上一级目录)
2011/05/29 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
2012/01/04 Javascript
jquery常用函数与方法汇总
2015/09/01 Javascript
AngularJS基础 ng-keyup 指令简单示例
2016/08/02 Javascript
Bootstrap模态框禁用空白处点击关闭
2016/10/20 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
Vue项目中使用Vux的安装过程
2018/05/01 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
对layui中表单元素的使用详解
2018/08/15 Javascript
Vue项目路由刷新的实现代码
2019/04/17 Javascript
javascript中的this作用域详解
2019/07/15 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
JavaScript实现烟花绽放动画效果
2020/08/04 Javascript
Windows下Anaconda的安装和简单使用方法
2018/01/04 Python
python操作xlsx文件的包openpyxl实例
2018/05/03 Python
TensorFlow自定义损失函数来预测商品销售量
2020/02/05 Python
Python接口测试环境搭建过程详解
2020/06/29 Python
Python2手动安装更新pip过程实例解析
2020/07/16 Python
英国知名衬衫品牌美国网站:Charles Tyrwhitt美国
2016/08/28 全球购物
Lookfantastic德国官网:英国知名美妆购物网站
2017/06/11 全球购物
编程用JAVA解析XML的方式
2013/07/07 面试题
银行会计职员个人的自我评价
2013/09/29 职场文书
音乐学专业求职信
2014/07/22 职场文书
十八大标语口号
2014/10/09 职场文书
公务员检讨书
2014/11/01 职场文书
2014年度工作总结报告
2014/12/15 职场文书
抢劫罪辩护词
2015/05/21 职场文书
JavaScript 去重和重复次数统计
2021/03/31 Javascript
Java设计模式之享元模式示例详解
2022/03/03 Java/Android
Elasticsearch 配置详解
2022/04/19 Java/Android