zoukankan      html  css  js  c++  java
  • python 包管理和virturlenv

    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 
  • 相关阅读:
    Java 位运算(移位、位与、或、异或、非)
    解决Android Studio 2.2.3中添加.cpp .h文件在Project->Android无法显示,无法正常编译问题。
    [ACM] HDU 5083 Instruction (模拟)
    Vbox视图热键
    Android Drawable 与 LayerList综合汇总
    数学之路-python计算实战(14)-机器视觉-图像增强(直方图均衡化)
    HDU 2896 病毒侵袭 AC自己主动机题解
    对团队中“这是某某某的问题”引起的思考
    杭电 2201
    三层架构
  • 原文地址:https://www.cnblogs.com/chenny7/p/4062693.html
Copyright © 2011-2022 走看看