详解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的类实例属性访问规则探讨
Jan 30 Python
搞笑的程序猿:看看你是哪种Python程序员
Jun 12 Python
Python编程修改MP3文件名称的方法
Apr 19 Python
不可错过的十本Python好书
Jul 06 Python
python机器学习理论与实战(五)支持向量机
Jan 19 Python
利用Python将数值型特征进行离散化操作的方法
Nov 06 Python
PyCharm+PySpark远程调试的环境配置的方法
Nov 29 Python
PyQt5 加载图片和文本文件的实例
Jun 14 Python
在脚本中单独使用django的ORM模型详解
Apr 01 Python
简单了解pytest测试框架setup和tearDown
Apr 14 Python
Pandas实现一列数据分隔为两列
May 18 Python
通过Python pyecharts输出保存图片代码实例
Nov 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
PHP 第三节 变量介绍
2012/04/28 PHP
PHP中key和current,next的联合运用实例分析
2016/03/29 PHP
javascript数组去重3种方法的性能测试与比较
2013/03/26 Javascript
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
2017/02/10 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
2017/04/13 Javascript
理解Angular的providers给Http添加默认headers
2017/07/04 Javascript
浅谈pc端rem字体设置的问题
2017/08/03 Javascript
React组件refs的使用详解
2018/02/09 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
Python 26进制计算实现方法
2015/05/28 Python
python学习之第三方包安装方法(两种方法)
2015/07/30 Python
Python中类型检查的详细介绍
2017/02/13 Python
Django验证码的生成与使用示例
2017/05/20 Python
Python 用Redis简单实现分布式爬虫的方法
2017/11/23 Python
对python中raw_input()和input()的用法详解
2018/04/22 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
2018/06/09 Python
python 地图经纬度转换、纠偏的实例代码
2018/08/06 Python
python调用c++传递数组的实例
2019/02/13 Python
完美解决python3.7 pip升级 拒绝访问问题
2019/07/12 Python
python自动识别文本编码格式代码
2019/12/26 Python
Python 实现训练集、测试集随机划分
2020/01/08 Python
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
毕业生找工作推荐信
2013/11/21 职场文书
新书吧创业计划书
2014/01/31 职场文书
班级体育活动总结
2014/07/05 职场文书
公共艺术专业自荐信
2014/09/01 职场文书
2014初中数学教研组工作总结
2014/12/19 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
2015年妇幼保健工作总结
2015/05/19 职场文书
Python使用pandas导入csv文件内容的示例代码
2022/12/24 Python