详解python中的包和包管理工具

python中的包

包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的python的应用环境。

python中的包和包管理工具" alt="详解python中的包和包管理工具" src="//www.dapan.cc/wp-content/uploads/2022/11/1668480815-37d9de229a46f39.jpg">

考虑一个在Phone目录下的pots.py文件。这个文件有如下源代码:

#!/usr/bin/python
#-*-coding:UTF-8-*-

defPots():
print"I'mPotsPhone"

同样地,我们有另外两个保存了不同函数的文件:

Phone/Isdn.py 含有函数Isdn()

Phone/G3.py 含有函数G3()

现在,在Phone目录下创建file __init__.py:

Phone/__init__.py

当你导入Phone时,为了能够使用所有函数,你需要在__init__.py里使用显式的导入语句,如下:

fromPotsimportPots
fromIsdnimportIsdn
fromG3importG3

当你把这些代码添加到__init__.py之后,导入Phone包的时候这些类就全都是可用的了。

#!/usr/bin/python
#-*-coding:UTF-8-*-

#导入Phone包
importPhone

Phone.Pots()
Phone.Isdn()
Phone.G3()

以上实例输出结果:

I'mPotsPhone
I'm3GPhone
I'mISDNPhone

如上,为了举例,我们只在每个文件里放置了一个函数,但其实你可以放置许多函数。你也可以在这些文件里定义python的类,然后为这些类建一个包。

python的包管理工具

Distribute是对标准库disutils模块的增强,我们知道disutils主要是用来更加容易的打包和分发包,特别是对其他的包有依赖的包。

Distribute被创建是因为Setuptools包不再维护了。

安装Distribute

可以通过distribute_setup.py 脚本来安装Distribute,也可以通过easy_install, pip,源文件来安装,不过使用distribute_setup.py来安装是最简单和受欢迎的方式

$curl-0http://python-distribute.org/distribute_setup.py
$sudopythondistribute_setup.py

Pip 是安装python包的工具,提供了安装包,列出已经安装的包,升级包以及卸载包的功能。

Pip 是对easy_install的取代,提供了和easy_install相同的查找包的功能,因此可以使用easy_install安装的包也同样可以使用pip进行安装。

安装Pip

Pip的安装可以通过源代码包,easy_install或者脚本。

下面介绍一下各种安装方法:

源代码方式:

$wgethttp://pypi.python.org/packages/source/p/pip/pip-0.7.2.tar.gz(替换为最新的包)
$tarxzfpip-0.7.2.tar.gz
$cdpip-0.7.2
$pythonsetup.pyinstall

easy_install:

$easy_installpip

get_pip.py 脚本:

$curl-0https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$sudopythonget-pip.py

下面来看一下Pip的使用

安装package

$pipinstallMarkdown

列出安装的packages

$pipfreeze

安装特定版本的package

通过使用==, >=, <=, >, <来指定一个版本号。

$pipinstall'Markdown<2.0'
$pipinstall'Markdown>2.0,<2.0.3'

升级包

升级包到当前最新的版本,可以使用-U 或者 –upgrade

$pipinstall-UMarkdown

卸载包

$pipuninstallMarkdown

查询包

pipsearch"Markdown"
/usr/local/lib/python2.7/dist-packages