详解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解析模块(ConfigParser)使用方法
Dec 10 Python
Python入门篇之字典
Oct 17 Python
在Python中操作列表之List.pop()方法的使用
May 21 Python
wxPython实现窗口用图片做背景
Apr 25 Python
python 利用for循环 保存多个图像或者文件的实例
Nov 09 Python
OpenCV+Python识别车牌和字符分割的实现
Jan 31 Python
Django基础知识 URL路由系统详解
Jul 18 Python
Form表单及django的form表单的补充
Jul 25 Python
Python 根据数据模板创建shapefile的实现
Nov 26 Python
Python内置方法实现字符串的秘钥加解密(推荐)
Dec 09 Python
使用Python打造一款间谍程序的流程分析
Feb 21 Python
python中numpy数组与list相互转换实例方法
Jan 29 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
ECSHOP在PHP5.5及高版本上报错的解决方法
2015/08/31 PHP
详解php魔术方法(Magic methods)的使用方法
2016/02/14 PHP
PHP 访问数据库配置通用方法(json)
2018/05/20 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
jQuery基础知识filter()和find()实例说明
2010/07/06 Javascript
浅析JavaScript中的delete运算符
2013/11/30 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
JavaScript不使用prototype和new实现继承机制
2014/12/29 Javascript
jQuery的one()方法用法实例
2015/01/19 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
AngularJS 输入验证详解及实例代码
2016/07/28 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
vue2中,根据list的id进入对应的详情页并修改title方法
2018/08/24 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
2019/04/02 Javascript
Vue实现验证码功能
2019/12/03 Javascript
如何编写一个 Webpack Loader的实现
2020/10/18 Javascript
Python3实现的腾讯微博自动发帖小工具
2013/11/11 Python
Python中max函数用法实例分析
2015/07/17 Python
python制作爬虫爬取京东商品评论教程
2016/12/16 Python
python 3利用BeautifulSoup抓取div标签的方法示例
2017/05/28 Python
python中的计时器timeit的使用方法
2017/10/20 Python
Python向Excel中插入图片的简单实现方法
2018/04/24 Python
详解Django解决ajax跨域访问问题
2018/08/24 Python
python实现K近邻回归,采用等权重和不等权重的方法
2019/01/23 Python
python根据多个文件名批量查找文件
2019/08/13 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
2020/01/14 Python
HTML5调用手机摄像头拍照的实现思路及代码
2014/06/15 HTML / CSS
校园报刊亭的创业计划书
2014/01/02 职场文书
个人现实表现材料
2014/02/04 职场文书
公司门卫的岗位职责
2014/02/19 职场文书
农民工讨薪标语
2014/06/26 职场文书
2014年统战工作总结
2014/12/09 职场文书
生死牛玉儒观后感
2015/06/11 职场文书
社区志愿者服务心得体会
2016/01/22 职场文书
中国十大神话动漫电影排行榜 哪吒登顶 白蛇缘起排第七
2022/03/21 国漫