详解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 相关文章推荐
Windows下安装python2.7及科学计算套装
Mar 05 Python
python数据结构之列表和元组的详解
Sep 23 Python
在Python中pandas.DataFrame重置索引名称的实例
Nov 06 Python
树莓派实现移动拍照
Jun 22 Python
python3 enum模块的应用实例详解
Aug 12 Python
Django将默认的SQLite更换为MySQL的实现
Nov 18 Python
Python如何使用Gitlab API实现批量的合并分支
Nov 27 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
Apr 03 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
Jun 03 Python
在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
Aug 07 Python
Python列表推导式实现代码实例
Sep 09 Python
Matplotlib animation模块实现动态图
Feb 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数组函数序列之array_combine() - 数组合并函数使用说明
2011/10/29 PHP
关于php内存不够用的快速解决方法
2013/10/26 PHP
用php守护另一个php进程的例子
2015/02/13 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
在PHP站点的页面上添加Facebook评论插件的实例教程
2016/01/08 PHP
Centos6.5和Centos7 php环境搭建方法
2016/05/27 PHP
Firefox outerHTML实现代码
2009/06/04 Javascript
google地图的路线实现代码
2009/08/20 Javascript
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
js或css实现滚动广告的几种方案
2010/01/28 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
JavaScript监听和禁用浏览器回车事件实例
2015/01/31 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
JQuery复制DOM节点的方法
2015/06/11 Javascript
详解javascript遍历方式
2015/11/11 Javascript
JS判断元素是否在数组内的实现代码
2016/03/30 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
浅谈React中组件间抽象
2018/01/27 Javascript
一个简单的node.js界面实现方法
2018/06/01 Javascript
vue如何引入sass全局变量
2018/06/28 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
Python压缩解压缩zip文件及破解zip文件密码的方法
2015/11/04 Python
python实现闹钟定时播放音乐功能
2018/01/25 Python
Django数据库表反向生成实例解析
2018/02/06 Python
django云端留言板实例详解
2019/07/22 Python
从numpy数组中取出满足条件的元素示例
2019/11/26 Python
CSS3实现背景透明文字不透明的示例代码
2018/06/25 HTML / CSS
联想阿根廷官方网站:Lenovo Argentina
2019/10/14 全球购物
商场拾金不昧表扬信
2014/01/13 职场文书
机关单位人员学雷锋心得体会
2014/03/10 职场文书
初三学习计划书范文
2014/04/30 职场文书
假释思想汇报范文
2014/10/11 职场文书
离婚协议书格式
2015/01/26 职场文书
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS
python使用pycharm安装pyqt5以及相关配置
2022/04/22 Python
MySQL数据库简介与基本操作
2022/05/30 MySQL