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可以通过distribute_setup.py脚本安装,也可以通过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
下面来看一下
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中写入txt文件路径11/09
- ♥ 如何解决python writerow乱码11/06
- ♥ python字符串是如何存储的11/02
- ♥ 如何使用 Python 获取多线程返回值?10/02
- ♥ python中多进程的写法12/30
- ♥ 整理python web框架01/03
内容反馈