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
python 包管理和virturlenv相关推荐
- 神经网络与深度学习——TensorFlow2.0实战(笔记)(二)(包管理和环境管理)
包管理和环境管理(以下操作也可在anaconda界面,进行可视化操作) 包管理:包的安装.卸载.更新和查找等等 conda命令 conda install <包名称列表> 同时安装多个包 ...
- 一种混合包管理和容器管理方案,及在tinycorelinux上安装containerd和openfaas
本文关键字:在tinycorelinux上装docker,virtual appliance vs virtual appstack,no cgroup mount found in mountinf ...
- uPython - 分发包、包管理和部署应用程序 - 以 microdot 为例
分发包.包管理和部署应用程序 - 以 microdot 为例 目录 分发包.包管理和部署应用程序 - 以 microdot 为例 概述 安装 mip 手动安装包 - microdot 参考资料 正如& ...
- 傻瓜bat脚本实现包管理和包引用——如何优雅的管理bat脚本集(一)
傻瓜bat脚本实现包管理和包引用--如何优雅的管理bat脚本集(一) 因为管理公司AD林需要,比如远程数据库的热备,冷备等,本来是使用付费工具实现的,但是系统重装以后丢失了注册码,又不愿意重新付费,所 ...
- Linux软件包管理和系统网络3
软件包管理: 软件包管理 安装/查询/卸载 一.软件的类型 A. 源码包tarball 需要编译 所有的包在初始的时候都是源码的,需先解压再编译,因此安装起来比较慢,但是灵活性高,可以自行配置,经过编 ...
- 9-10 rpm程序包管理和YUM仓库
程序包管理: 常见的软件包管理器 Debian系列:dpkg (DebianPackager) 管理 以.deb 结尾的软件包. "Debian"的"Linux &quo ...
- linux系统软件包分类,Linux软件包管理和编译安装
软件包介绍 开源软件最初只提供了.tar.gz的打包的源码文件,用户必须自已编译每个想在GNU/Linux上运行的软件.用户急需系统能提供一种更加便利的方法来管理这些软件,当Debian诞生时,这样一 ...
- 包管理和环境管理软件Anaconda
可以用于配置linux下得虚拟环境,该软件可以针对不同服务配置不同的运行环境,方便包管理与环境管理 转载于:https://www.cnblogs.com/zl1991/p/9063311.html
- gin:包管理和路由拆分
文章目录 前言 包管理 文件内package的命名 引用的起点 gin路由拆分 添加一个路由 通过继承减少方法的层级 gva的拆分是否过于麻烦? 总结 前言 gin的路由拆分,实际就是路由模块化分组. ...
最新文章
- Docker不香吗,为啥还要K8s?
- ie6下常见的bug 调整页面兼容性
- linux设备模型bus,device,driver,(kobject、ktype、kset,bus_type、device、device_driver)
- 全面理解python中self的用法
- python生成随机密码
- waf可以检测哪个端口的流量_锐速云:CC防御过程中,WAF的主要特点有哪些?
- [Java基础]Arrays的常用方法
- Guns根据条件查询数据_入门试炼04
- WEB架构师成长之路-摘录
- Mybatis-学习笔记(10)调用存储过程、存储函数
- 微信文件夹的dat文件怎么打开_使用什么软件打开微信dat文件
- labelme转VOC2007格式
- win10系统服务器管理器,win10服务管理器,详细教您Win10服务管理器怎样打开
- 【51单片机快速入门指南】5.2:SPI读取 12位ADC XPT2046 芯片
- 弘扬优秀传统文化 致敬母爱母教伟大
- pytorch以图搜图作业
- Location服务之LocationManager
- 1.STM32F103-点亮第一颗LED
- 利用Python实现阴阳师自动抽卡
- vi打开文件提示Another program may be editing the same file