原文:http://www.educity.cn/wenda/356834.html
常见的包管理工具包括distutils,setuptools,pip,virtualenv。
一 、distutils -
Python自带的基本安装工具, 适用于非常简单的应用场景使用
通过distutils来打包,生成安装包,安装python包等工作,需要编写名为setup.py python脚本文件。如下代码:
from distutils.core import setup setup( name = "testpackage", version = "1.0", description = "Distutils sample distribution testpackage", packages = ['TestPackage'] )
通过上述代码可以进行打包或生成安装文件,并能进行安装
1.打包:python setup.py sdist
2.安装:python setup.py install
3.windows下安装文件exe(在windows下才能生效):python setup.py bdist_wininst
4.linux下rpm安装文件(在有rpm环境下才能生效):python setup.py sdist_rpm
进行打包,和生成Windows下可执行文件后,如下图所示:
生成了zip包和exe的可执行包,这时就可以通过解开zip包后用python setyp.py install来安装,或者在Windows下直接双击安装。安装完后会在%python_home%\Lib\site-packages下多出此安装包,你就可以爽爽地使用了。
二 、setuptools -
针对 distutils 做了大量扩展, 尤其是加入了包依赖机制。不支持python3,安装完setuptools后会有easy_install
三 、distribute -
类似于setuptools,支持python3,安装完distribute后会有easy_install。
四 、easy_install -
setuptools 和 distribute 自带的安装脚本, 也就是一旦setuptools或distribute安装完毕, easy_install 也便可用了在%python_home%\Scripts下会有对应的可执行文件,如easy_install.exe,最大的特点是自动查找 Python 官方维护的包源 PyPI , 安装第三方 Python 包非常方便。
文档:
easy_install 包名==版本号 安装第三方包
easy_install --help 来查看命令详情
五、 pip -
目标是取代easy_install。easy_install 有很多不足: 安装事务是非原子操作, 只支持 svn, 没有提供卸载命令, 安装一系列包时需要写脚本; pip 解决了以上问题, 已俨然成为新的事实标准, virtualenv 与它已经成为一对好搭档;
使用:
安装: pip install [PACKAGE_NAME]
升级:pip install -U [PACKAGE_NAME]
卸载: pip uninstall [PACKAGE_NAME]
查询包: pip search [PACKAGE_NAME]
列出安装的包及其版本:pip freeze
查看帮助:pip help
通过使用==, >=, <=, >, <来指定一个版本号
下载地址:通过python setup.py install来安装,通过pip --version来查看版本。
六、 virtualenv -
用来创建隔离的python环境,处理python环境的多版本和模块依赖。在默认安装下virtualenv安装的是setuptools而不是distribute,如果想安装distribute需要使用--distribute参数:python virtualenv.py --distribute。
安装完后在python_home的scripts目录下有virtualenv.exe可执行文件,使用virtualenv mysite,创建新的python环境mysite,并且已有pip和easy_install。
virtualenv [OPTIONS] DEST_DIR
--version显示当前版本号。
-h, --help显示帮助信息。
-v, --verbose显示详细信息。
-q, --quiet不显示详细信息。
-p PYTHON_EXE, --python=PYTHON_EXE指定所用的python解析器的版本,比如 --python=python2.5 就使用2.5版本的解析器创建新的隔离环境。 默认使用的是当前系统安装(/usr/bin/python)的python解析器
--clear清空非root用户的安装,并重头开始创建隔离环境。
--no-site-packages令隔离环境不能访问系统全局的site-packages目录。
--system-site-packages令隔离环境可以访问系统全局的site-packages目录。
--unzip-setuptools安装时解压Setuptools或Distribute
--relocatable重定位某个已存在的隔离环境。使用该选项将修正脚本并令所有.pth文件使用相当路径。
--distribute使用Distribute代替Setuptools,也可设置环境变量VIRTUALENV_DISTRIBUTE达到同样效要。
--extra-search-dir=SEARCH_DIRS用于查找setuptools/distribute/pip发布包的目录。可以添加任意数量的–extra-search-dir路径。
--never-download禁止从网上下载任何数据。此时,如果在本地搜索发布包失败,virtualenv就会报错。
--prompt==PROMPT定义隔离环境的命令行前缀。
总结:
disutils、setuptools、distribute属于一类,都是一组工具集,用于打包和安装包。
easy_install和pip属于一类,用于安装包,它在disutils的基础上增加了自动识别包依赖。