python 包管理工具

Python当前的包管理工具链是 easy_install/pip + distribute/setuptools + distutils,显得较为混乱。

而将来的工具链组合非常简单:pip + distutils2。

1、distutils:Python 自带的基本安装工具,适用于非常简单的应用场景,使用:

  • 为项目创建 setup.py 脚本;
  • 执行 setup.py install 可进行安装;

2、setuptools:针对 distutils 做了大量扩展,尤其是加入了包依赖机制,在部分 Python 子社区已然是事实上的标准。

3、distribute:由于 setuptools 开发进度缓慢,不支持 Python 3,代码混乱,一帮程序员另起炉灶,重构代码,增加功能,希望能够取代 setuptools 并被接纳为官方标准库,他们非常努力,在很短的时间便让社区接受了 distribute。

4、easy_install:setuptools 和 distribute 自带的安装脚本,也就是一旦 setuptools 或 distribute 安装完毕,easy_install 也便可用。最大的特点是自动查找 Python 官方维护的包源 PyPI,安装第三方 Python 包非常方便。使用:

  • setuptools / distribute 都只是扩展了 distutils;
  • easy_install [PACKAGE_NAME] 自动从 PyPI 查找/下载/安装指定的包。
  • easy_install 也有很多不足:安装事务是非原子操作,只支持 svn,没有提供卸载命令, 安装一系列包时需要写脚本。

5、distutils2:setuptools 和 distribute 的诞生是因为 distutils 的不济,进而导致目前分化的状况。而 Guido 并未接纳 distribute 为官方标准,并说明了原因。它将成为 Python 3.3 的标准库 packaging,并在其它版本中以 distutils2 的身份出现。换句话说,它和 pip 将联手结束目前混乱的状况。

6、pip 是 easy_install 的一个替换品。pip 的安装需要setuptools 或者 distribute,distribute是setuptools的取代(Setuptools包后期不再维护了),如果你使用的是Python3.x那么就只能使用distribute因为Python3.x不支持setuptools。

下面来看一下pip的使用:

安装特定版本的package,通过使用==, >=, <=, >, <来指定一个版本号,例如安装Markdown包:

pip install 'Markdown<2.0'
pip install 'Markdown>2.0,<2.0.3'

包的安装路径:/usr/local/lib/python2.7/dist-packages。

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

pip install -U Markdown

卸载包

pip uninstall Markdown

查询包

pip search "multiprocessing"

列出安装的packages

pip freeze

virtualenv

在开发Python应用程序的时候,系统安装的Python只有一个版本。所有第三方的包都会被pip安装到Python的site-packages目录下。

如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python,如果应用A需要jinja 2.7,而应用B需要jinja 2.6怎么办?

这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境。virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。

假定我们要开发一个新的项目,需要一套独立的Python运行环境,可以在项目目录下执行下面的命令:

 virtualenv --no-site-packages venv

virtualenv命令创建一个独立的Python运行环境,参数--no-site-packages 表示已经安装到系统Python环境中的所有第三方包都不会复制过来,这样,我们就得到了一个不带任何第三方包的“干净”的Python运行环境。

新建的Python环境被放到当前目录下的venv目录。有了venv这个Python环境,可以用source命令进入该环境:

source venv/bin/activate

在venv环境下,用pip安装的包都被安装到venv这个环境下,系统Python环境不受任何影响。也就是说,venv环境是专门针对myproject这个应用创建的。

退出当前的venv环境,使用deactivate命令:

deactivate 

python 包管理工具的更多相关文章

  1. Python 包管理工具解惑

    Python 包管理工具解惑 本文链接:http://zengrong.net/post/2169.htm python packaging 一.困惑 作为一个 Python 初学者,我在包管理上感到 ...

  2. Python包管理工具和多版本环境管理

    1. Python包管理工具 在安装Python包的过程中,经常涉及到distutils.setuptools.distribute.setup.py.easy_install.easy_instal ...

  3. 转载:Python 包管理工具解惑

    Python 包管理工具解惑 本站文章除注明转载外,均为本站原创或者翻译. 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商: 本站部分原创和翻译文章提供m ...

  4. Python包管理工具pip的基本使用

    1.简介 pip 是一个Python包管理工具,主要是用于安装 PyPI 上的软件包,可以替代 easy_install 工具. 2.pip安装 如果你安装的Python 2 >=2.7.9 或 ...

  5. Python包管理工具小结

    此文已由作者张耕源授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 作为一名接触Python有一段时间的初学者,越来越体会到Python的方便之处,它使人能更 多的关注业务本身 ...

  6. python包管理工具他们之间的关系

    python包管理工具之间的关系 现在的python包管理工具有很多,非常混乱,必须理清他们之间的关系才能更好的使用python构建强大的包关系系统工具. 首先:python官方推荐的第三方库是PyP ...

  7. Python | Pipenv官方推荐的python包管理工具

    原文地址:https://cloud.tencent.com/developer/article/1355672 Pipenv - 官方推荐的的python包管理工具. Pipenv是一款旨在将所有包 ...

  8. [转载]Python 包管理工具

    [转载]Python 包管理工具 最近由于机缘巧合,使用各种方法安装了一些Python包,所以对Python的包管理开始感兴趣.在网上找到一篇很好的文章:https://blog.zengrong.n ...

  9. python 包管理工具 pip 的配置

    近几年来,python的包管理系统pip 越来越完善, 尤其是对于 windows场景下,pip大大改善了python的易用性. https://www.cnblogs.com/yvivid/p/pi ...

随机推荐

  1. MVVM: 通过 x:Bind 实现 MVVM(不用 Command)

    背水一战 Windows 10 之 MVVM(Model-View-ViewModel) 通过 x:Bind 实现 MVVM(不用 Command) 示例1.ModelMVVM/Model/Produ ...

  2. gene_abundance_estimation

    /home/liuhui/bin/trinityrnaseq_r20140413p1/util/support_scripts/get_Trinity_gene_to_trans_map.pl Tri ...

  3. NuGet命令行工具和可视化工具

    Nuget出了命令行工具之外,还有一个可视化工具,下载地址如下: 命令行(推荐官网下载,有中文提示!):https://dist.nuget.org/index.html 可视化(简单.方便.易用): ...

  4. roundup配置

    原因:我需要一个简单的issue tracker why roundup: python,简单 找了半天的文档,找不到文档,只能自己慢慢试,试到现在,可以打开tracker页面,用户注册的时候可以发邮 ...

  5. ClassCastException 导致程序一运行就强制退出

    程序显示是类型转换异常,原因是  ic—launcher 不是layerlist图形,而是bmp类型(此处不是指格式)图片,因此取出来后经过红框内强制类型转换导致出错. 为什么我当时要把他强制转换? ...

  6. EF-CodeFirst-1 玩起来

    注本文是学习旺杰兄的CodeFirst系列所写 CodeFirst CodeFirst是一种全新的玩法,代码先行使得我们更了解实体之间的关系.而且更加符合了DDD领域驱动设计的思想 .所以CodeFi ...

  7. 第六次作业——利用MFC实现计算器图形界面以及简单四则运算表达式批处理

    参考资料:      1.MFC响应键盘      2.计算器实例      3.MFC文件对话框      4.MFCUpdateData()函数的使用      5.MFC教程      6.wi ...

  8. 系统安装之:虚拟机VMware V12.0.1 专业版 + 永久密钥

    撰写日期:2016-6-30 10:30:26 转自:http://blog.sina.com.cn/s/blog_4549d6770102vxue.html    VMware V12.0.1 专业 ...

  9. iOS 获得当前经纬度和城市

    1.引入CoreLocation.framework,#import <CoreLocation/CoreLocation.h>,添加委托CLLocationManagerDelegate ...

  10. js中substring与substr的学习。

    今天在工作的过程中,看到js中两个双胞胎函数.分别是substring与substr.顿时被两个可恶的家伙给迷惑住了,不知道具体有什么作用.. 先来看看substring手册是怎么介绍的. 手册解释的 ...