详解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脚本
Apr 05 Python
python在命令行下使用google翻译(带语音)
Jan 16 Python
python标准算法实现数组全排列的方法
Mar 17 Python
Scrapy-redis爬虫分布式爬取的分析和实现
Feb 07 Python
Python面向对象编程基础解析(一)
Oct 26 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
Nov 14 Python
用Pygal绘制直方图代码示例
Dec 07 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
Mar 05 Python
对django中foreignkey的简单使用详解
Jul 28 Python
解决django-xadmin列表页filter关联对象搜索问题
Nov 15 Python
简述 Python 的类和对象
Aug 21 Python
python自动化八大定位元素讲解
Jul 09 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
文件上传的实现
2006/10/09 PHP
基于PHP CURL用法的深入分析
2013/06/09 PHP
解析Extjs与php数据交互(增删查改)
2013/06/25 PHP
php使用qr生成二维码的示例分享
2014/01/20 PHP
zf框架的Filter过滤器使用示例
2014/03/13 PHP
php上传文件并存储到mysql数据库的方法
2015/03/16 PHP
PHP接口并发测试的方法(推荐)
2016/12/15 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
javascript 动态table添加colspan\rowspan 参数的方法
2009/07/25 Javascript
两个select多选模式的选项相互移动(示例代码)
2014/01/11 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
jQuery层级选择器用法分析
2015/02/10 Javascript
如何利用JQuery实现从底部回到顶部的功能
2016/12/27 Javascript
微信小程序 switch组件详解及简单实例
2017/01/10 Javascript
详解用Node.js写一个简单的命令行工具
2018/03/01 Javascript
vue树形结构获取键值的方法示例
2018/06/21 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
2019/09/19 Javascript
小程序外卖订单界面的示例代码
2019/12/30 Javascript
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
2017/07/07 Python
Python引用类型和值类型的区别与使用解析
2017/10/17 Python
python使用PIL给图片添加文字生成海报示例
2018/08/17 Python
在python中安装basemap的教程
2018/09/20 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
python利用7z批量解压rar的实现
2019/08/07 Python
使用python获取邮箱邮件的设置方法
2019/09/20 Python
教师绩效工资方案
2014/02/01 职场文书
八一慰问活动方案
2014/02/07 职场文书
企业晚会策划方案
2014/05/29 职场文书
财务审计整改报告
2014/11/06 职场文书
唐山大地震观后感
2015/06/05 职场文书
安全教育培训制度
2015/08/06 职场文书
创业计划书之服装
2019/10/07 职场文书
关于Numpy之repeat、tile的用法总结
2021/06/02 Python
搞笑Gif:这么白这么长的腿像极了一楼的女朋友
2022/03/21 杂记