设为首页 收藏本站
查看: 453|回复: 0

[经验分享] python包管理:distutils,setuptools,pip,virtualenv等介绍

[复制链接]

尚未签到

发表于 2017-5-1 14:40:38 | 显示全部楼层 |阅读模式
  对于每个编程语言来说打包和发布开发包往往非常重要,而作为一个编程者能够快速容易的获得并应用这些由第三方提供的包同样非常重要。类似于java为了便于管理有人开发了maven等管理工作,而python自然而然也需要便捷的打包和发布工具,以下就介绍python的几个包管理方式。
  一  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下可执行文件后,如下图所示:
DSC0000.png
生成了zip包和exe的可执行包,这时就可以通过解开zip包后用python setyp.py install来安装,或者在Windows下直接双击安装。安装完后会在%python_home%\Lib\site-packages下多出此安装包,你就可以爽爽地使用了。


二  setuptools - 针对 distutils 做了大量扩展, 尤其是加入了包依赖机制。不支持python3,安装完setuptools后会有easy_install

安装地址:http://pypi.python.org/pypi/setuptools
  windows

1.32位操作系统直接exe安装文件安装

2.64位操作系统下载名为ez_setup.py的python脚本文件运行,它会自动安装适合的egg文件并帮您安装(当前还不支持64位的exe安装文件安装,由于distutils安装兼容问题)

Linux

直接下载rpm源码安装包,通过如:rpm -ivh setuptools-0.6c11-1.src.rpm 安装

Mac OS,Linux,其他系统

下载对应python版本的egg包,然后通过运行脚本的方式去安装,如 sh setuptools-0.6c11-py2.7.egg 

python版本支持 

32位系统至少需要python2.3.5或以上版本支持 

64位系统至少需要python2.4或以上版本支持

 

三  distribute - 类似于setuptools,支持python3,安装完distribute后会有easy_install。

 

四  easy_install - setuptools 和 distribute 自带的安装脚本, 也就是一旦setuptools或distribute安装完毕, easy_install 也便可用了。

在%python_home%\Scripts下会有对应的可执行文件,如easy_install.exe,最大的特点是自动查找 Python 官方维护的包源 PyPI , 安装第三方 Python 包非常方便。

文档:http://peak.telecommunity.com/DevCenter/EasyInstall

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

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

下载地址:https://pypi.python.org/pypi/pip 通过python setup.py install来安装,通过pip --version来查看版本。

 



六  distutils2 - setuptools 和 distribute 的诞生是因为 distutils 的不济, 进而导致目前分化的状况。它将成为 Python 3.3 的标准库 packaging , 并在其它版本中以distutils2 的身份出现; 换句话说, 它和 pip 将联手结束目前混乱的状况。

 

七  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定义隔离环境的命令行前缀。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-371720-1-1.html 上篇帖子: Python 学习入门(22)—— 线程同步 下篇帖子: 玩手机的都来看,教祢认识Python
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表