详解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中实现定制类的特殊方法总结
Sep 28 Python
Python实现快速多线程ping的方法
Jul 15 Python
Python将多份excel表格整理成一份表格
Jan 03 Python
Python多进程写入同一文件的方法
Jan 14 Python
python傅里叶变换FFT绘制频谱图
Jul 19 Python
Python使用指定端口进行http请求的例子
Jul 25 Python
pandas条件组合筛选和按范围筛选的示例代码
Aug 26 Python
Python实现序列化及csv文件读取
Jan 19 Python
python实现微信打飞机游戏
Mar 24 Python
简述python&amp;pytorch 随机种子的实现
Oct 07 Python
如何基于matlab相机标定导出xml文件
Nov 02 Python
Python函数对象与闭包函数
Apr 13 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/03/01 无线电
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
浏览器图片选择预览、旋转、批量上传的JS代码实现
2013/12/04 Javascript
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
jQuery制作的别致导航有阴影背景高亮模式窗口
2014/04/15 Javascript
实现placeholder效果的方案汇总
2015/06/11 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
微信js-sdk界面操作接口用法示例
2016/10/12 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
Easyui的组合框的取值与赋值
2016/10/28 Javascript
微信小程序tabBar用法实例详解
2017/12/04 Javascript
react-native封装插件swiper的使用方法
2018/03/20 Javascript
详解JavaScript原生封装ajax请求和Jquery中的ajax请求
2019/02/14 jQuery
mock.js模拟前后台交互
2019/07/25 Javascript
JS立即执行的匿名函数用法分析
2019/11/04 Javascript
vue 解决computed修改data数据的问题
2019/11/06 Javascript
javascript将扁平的数据转为树形结构的高效率算法
2020/02/27 Javascript
Python找出文件中使用率最高的汉字实例详解
2015/06/03 Python
实例解析Python中的__new__特殊方法
2016/06/02 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
2017/12/20 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
Python快速转换numpy数组中Nan和Inf的方法实例说明
2019/02/21 Python
HTML5通用接口详解
2016/06/12 HTML / CSS
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
Auchan Direct波兰:欧尚在线杂货店
2016/10/19 全球购物
Spongelle官网:美国的创意护肤洗护品牌
2019/05/15 全球购物
PHP如何去执行一个SQL语句
2016/03/05 面试题
经理秘书岗位职责
2013/11/14 职场文书
民事授权委托书范文
2014/08/02 职场文书
2014年采购部工作总结
2014/11/20 职场文书
2016企业先进集体事迹材料
2016/02/25 职场文书
Python机器学习应用之基于线性判别模型的分类篇详解
2022/01/18 Python
Python  lambda匿名函数和三元运算符
2022/04/19 Python