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. 神经网络与深度学习——TensorFlow2.0实战(笔记)(二)(包管理和环境管理)

    包管理和环境管理(以下操作也可在anaconda界面,进行可视化操作) 包管理:包的安装.卸载.更新和查找等等 conda命令 conda install <包名称列表> 同时安装多个包 ...

  2. 一种混合包管理和容器管理方案,及在tinycorelinux上安装containerd和openfaas

    本文关键字:在tinycorelinux上装docker,virtual appliance vs virtual appstack,no cgroup mount found in mountinf ...

  3. uPython - 分发包、包管理和部署应用程序 - 以 microdot 为例

    分发包.包管理和部署应用程序 - 以 microdot 为例 目录 分发包.包管理和部署应用程序 - 以 microdot 为例 概述 安装 mip 手动安装包 - microdot 参考资料 正如& ...

  4. 傻瓜bat脚本实现包管理和包引用——如何优雅的管理bat脚本集(一)

    傻瓜bat脚本实现包管理和包引用--如何优雅的管理bat脚本集(一) 因为管理公司AD林需要,比如远程数据库的热备,冷备等,本来是使用付费工具实现的,但是系统重装以后丢失了注册码,又不愿意重新付费,所 ...

  5. Linux软件包管理和系统网络3

    软件包管理: 软件包管理 安装/查询/卸载 一.软件的类型 A. 源码包tarball 需要编译 所有的包在初始的时候都是源码的,需先解压再编译,因此安装起来比较慢,但是灵活性高,可以自行配置,经过编 ...

  6. 9-10 rpm程序包管理和YUM仓库

    程序包管理: 常见的软件包管理器 Debian系列:dpkg (DebianPackager) 管理 以.deb 结尾的软件包. "Debian"的"Linux &quo ...

  7. linux系统软件包分类,Linux软件包管理和编译安装

    软件包介绍 开源软件最初只提供了.tar.gz的打包的源码文件,用户必须自已编译每个想在GNU/Linux上运行的软件.用户急需系统能提供一种更加便利的方法来管理这些软件,当Debian诞生时,这样一 ...

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

    可以用于配置linux下得虚拟环境,该软件可以针对不同服务配置不同的运行环境,方便包管理与环境管理 转载于:https://www.cnblogs.com/zl1991/p/9063311.html

  9. gin:包管理和路由拆分

    文章目录 前言 包管理 文件内package的命名 引用的起点 gin路由拆分 添加一个路由 通过继承减少方法的层级 gva的拆分是否过于麻烦? 总结 前言 gin的路由拆分,实际就是路由模块化分组. ...

最新文章

  1. Docker不香吗,为啥还要K8s?
  2. ie6下常见的bug 调整页面兼容性
  3. linux设备模型bus,device,driver,(kobject、ktype、kset,bus_type、device、device_driver)
  4. 全面理解python中self的用法
  5. python生成随机密码
  6. waf可以检测哪个端口的流量_锐速云:CC防御过程中,WAF的主要特点有哪些?
  7. [Java基础]Arrays的常用方法
  8. Guns根据条件查询数据_入门试炼04
  9. WEB架构师成长之路-摘录
  10. Mybatis-学习笔记(10)调用存储过程、存储函数
  11. 微信文件夹的dat文件怎么打开_使用什么软件打开微信dat文件
  12. labelme转VOC2007格式
  13. win10系统服务器管理器,win10服务管理器,详细教您Win10服务管理器怎样打开
  14. 【51单片机快速入门指南】5.2:SPI读取 12位ADC XPT2046 芯片
  15. 弘扬优秀传统文化 致敬母爱母教伟大
  16. pytorch以图搜图作业
  17. Location服务之LocationManager
  18. 1.STM32F103-点亮第一颗LED
  19. 利用Python实现阴阳师自动抽卡
  20. vi打开文件提示Another program may be editing the same file

热门文章

  1. 那些年我用过的开源软件、框架
  2. Linux+apache+svn
  3. html鼠标标控制,html 鼠标 css 控制
  4. 手机轮廓光怎么拍_想拍美秋天叶子,别犯这5个初级错误!告诉错在哪里及咋拍正确...
  5. AOP 在Spring 中的应用
  6. Redis中的可用性保证之Sentinel服务下线
  7. IntelliJ IDEA导入一个已经存在的子模块
  8. 通过反射获取私有构造方法并使用
  9. request的其他细节
  10. 改造消费方解决地址硬编码问题