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 包管理和virturlenv的更多相关文章

  1. 在python包管理中使用easy_install软件的步骤

    本文主要介绍的是让python包管理变得更加容易的实际应用方法,就是运用easy_install这一软件,下面是文章的具体介绍. easy_install让python包管理变得 如果你想对Pytho ...

  2. NPM一Node包管理和分发工具

    NPM 全称 Node Package Manager Node包管理和分发工具,可以把NPM理解为前端的Maven 我们通过npm可以很方便地下载js库,管理前端工程 最近版本的node.js已经集 ...

  3. anaconda --包管理和环境管理器

    前言: 以下所有的命令都Win10环境的 Anaconda Prompt 中 环境管理 创建虚拟环境 conda create --name env_name python 也可以指定 Python ...

  4. 包管理和环境管理软件Anaconda

    可以用于配置linux下得虚拟环境,该软件可以针对不同服务配置不同的运行环境,方便包管理与环境管理

  5. Linux软件包管理和磁盘管理实践

    一.自建yum仓库,分别为网络源和本地源 本地yum仓库的搭建就是以下三个步骤: 创建仓库目录结构 上传相应的包到目录下,或者直接挂载光盘也行,如果挂载光盘,第三步就可以省略,因为光盘默认里有repo ...

  6. Linux操作系统(7):rpm包管理和yum软件包在线管理

    一.rpm 包的管理 介绍:一种用于互联网下载包的打包及安装工具,它包含在某些 Linux 分发版中.它生成具有.RPM 扩展名的文件.RPM 是 RedHat Package Manager(Red ...

  7. Anaconda——Python包管理工具

    Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能 主要用于Python包管理和版本管理. 下载地址:https:/ ...

  8. Selenium网页自动登录项目(基于Python从0到1)

    Selenium是一个自动化测试工具,利用它我们可以驱动浏览器执行特定的动作,如点击.下拉等操作. 本文讲述的是通过自动化的方式登陆某一网站,其中包含Selenium+python自动化项目环境如何部 ...

  9. 师傅领进门之6步教你跑通一个AI程序!

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云计算基础发表于云+社区专栏 源码下载地址请点击原文查看. 初学机器学习,写篇文章mark一下,希望能为将入坑者解点惑.本文介绍一些机 ...

随机推荐

  1. 【Android】3.7 UI控制功能

    分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 一.简介 简介:介绍开关手势功能和显示隐藏UI控件 详述: (1)地图操作开关:平移.缩放.双击放大.双指操作 ...

  2. laravel 拾遗 中间件

    Problem You want to add middleware to your application but don't know where to begin.     Solution C ...

  3. flask celery 使用方法

    一.安装 由于celery4.0不支持window,如果在window上安装celery4.0将会出现下面的错误flask_clery 你现在只能安装pip install celery==3.1 二 ...

  4. 在Eclipse中给JRE-Library添加本地Javadoc

    Eclipse中的JRE-Library的Javadoc默认是一个URL,指向oracle的一个web-page,那你在离线的时候就无法使用了,为了解决这个问题,你可以从oracle下载JDK-Spe ...

  5. Java Callable并发编程模板

    submit方法会产生Future对象,它用Callable返回结果的特定类型进行了参数化,可以用isDone()的方法来查询Future是否已经完成.当任务完成是,它具有一个结果,可以调用get() ...

  6. 通过Windows PowerShell远程管理计算机(精简版)

    现在你手中有一台server(主控端),你打算通过主控端远程管理多台server(被控端).这个过程可以通过Windows PowerShell来完成. 首先在被控端上以管理员权限打开PowerShe ...

  7. kmp返回头位置的模板

    #include<iostream> #include<stdio.h> #include<string.h> using namespace std; char ...

  8. Struts Ajax Json

    一.包 struts2与json的依赖包:struts2-json-plugin-2.2.3.jar 二.过程: ①引入json依赖包 ②编写action类 ③配置struts.xml ④编写页面 ⑤ ...

  9. JAVA-JSP注释

    相关资料: <21天学通Java Web开发> 结果总结: 1.一类可以在客户端显示的注释,即HTML注释.2.<!-- -->,中间为注释部分.3.如果使用MyEclipse ...

  10. 一款基于jquery带百分比的响应式进度加载条

    今天要给大家带来一款基于jquery带百分比的响应式进度加载条.这款加载条非常漂亮,而且带有进度的百度比,且在不同的百分比用的是不同的颜色.而且这款加载条采用了响应式设计,在不同的分辨率的显示器下完美 ...