一篇文章完全理解virtualenv
專 欄
❈
夏轩,Python中文社区专栏作者。
博客:http://blog.csdn.net/u012734441
❈
- 1.virtualenv介绍
- 2.安装virtualenv
- 3.virtualenv运行使用
- 4.virtualenv其他命令
- 综合
1.virtualenv介绍
在python开发中,我们可能会遇到一种情况,就是当前的项目依赖的是某一个版本,但是另一个项目依赖的是另一个版本,这样就会造成依赖冲突,而virtualenv就是解决这种情况的,virtualenv通过创建一个虚拟化的python运行环境,将我们所需的依赖安装进去的,不同项目之间相互不干扰,如下所示。
2.安装virtualenv
安装virtualenv比较简单,无论是在linux系统上还是windows上都可以通过pip来进行安装,如下:
pip install virtualenv
如果安装不成功也可以下载virtualenv源码package,通过执行setup.py来安装virtualenv。同时因为python2和python3的不同,因此也有了两种pip和pip3两种python包安装工具,而两种工具安装的virtualenv也是不相同的,py2安装的virtualenv虚拟化出来的python运行环境是python2的,py3安装的virtualenv默认虚拟化环境则是python3的。
3.virtualenv运行使用
3.1 创建虚拟化环境
使用pycharm来作为本示例的编辑器,选择python2.7工作环境,新建工程virtualenvDemo,在控制台中输入命令:
virtualenv venv
这时候便会在当前的项目中创建venv文件夹,为当前项目的虚拟python运行环境,如下:
我本机此时默认的python环境为python2.7,那么此时创建的虚拟环境就是以python2.7创建的虚拟化环境,如果需要选择一个python解释器来创建虚拟化环境,命令则为:
virtualenv -p /usr/bin/python2.7 venv
此时还需将当前工程的interpreter改为当前的虚拟环境,要不然会不起作用,这个不再详述。
3.2 启用
激活虚拟化环境的命令为:
source venv/bin/activate
激活后,在控制台会有一个带有(venv)的标志,如下:
3.3安装依赖
在以上完成之后就可以通过命令pip install 来安装python包了,这里安装python包就不需要root权限了,直接就可以安装十分方便。在venv的环境中,使用pip安装的包都不会再是全局性的包,只会在当前的虚拟环境中起作用,避免了污染系统环境。
3.4 退出当前系统环境
在控制台中输入命令deactivate后,就会推出当前的venv虚拟化环境。
4.virtualenv其他命令
virtualenv各种其他命令如下:
``` 用法:
$ virtualenv [OPTIONS] DEST_DIR 选项: --version 显示当前版本号。 -h, --help 显示帮助信息。 -v, --verbose 显示详细信息。 -q, --quiet 不显示详细信息。 -p PYTHON_EXE, --python=PYTHON_EXE 指定所用的python解析器的版本,比如 --python=python2.5 就使用2.5版本的解析器创建新的隔离环境。 默认使用的是当前系统安装(/usr/bin/python)的python解析器 --clear 清空非root用户的安装,并重头开始创建隔离环境。 --no-site-packages 令隔离环境不能访问系统全局的site-packages目录。 --system-site-packages 令隔离环境可以访问系统全局的site-packages目录。 --unzip-setuptools 安装时解压Setuptools或Distribute --relocatable 重定位某个已存在的隔离环境。使用该选项将修正脚本并令所有.pth文件使用相当路径。 --distribute 使用Distribute代替Setuptools,也可设置环境变量VIRTUALENV_DISTRIBUTE达到同样效要。 --extra-search-dir=SEARCH_DIRS 用于查找setuptools/distribute/pip发布包的目录。可以添加任意数量的–extra-search-dir路径。 --never-download 禁止从网上下载任何数据。此时,如果在本地搜索发布包失败,virtualenv就会报错。 --prompt==PROMPT 定义隔离环境的命令行前缀。 ```
5.综上
- virtualenv就是一个搭建虚拟化的python环境,便于不同的项目在同一台机器上开发运行。
- virtualenv更多的还是适用于本地开发不同的项目,但是在生产环境中还是使用docker给不同的项目创建不同的容器,各自分开运行为好,不宜放在一个单独的物理机中运行。
- swingbench压测Oracle小记(r12笔记第20天)
- 分享最近对网站外链跳转页面代码的一些改善
- swingbench压测Oracle小记(r12笔记第19天)
- Oracle闪回原理测试(三)(r12笔记第16天)
- 利用JS生成二维码图片,优化WEB性能及页面加载速度
- Go语言的指针 & *
- MySQL中的double write(二)(r12笔记第17天)
- 论Go语言中goroutine的使用
- WordPress发布文章同步到新浪微博失败的问题解决与分享
- 压测工具swingbench和sysbench对比(r12笔记第13天)
- 解决WordPress4.4.1不支持图片暗箱问题,Begin主题适用
- MySQL源码安装总结(r12笔记第12天)
- 全站启用SSL之后,如何兼容不支持https抓取的搜索引擎?
- sandbox和MHA快速测试(r12笔记第32天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- [记录点滴] 一个解决Lua 随机数生成问题的办法
- [记录点滴] 记录一次用 IntelliJ IDEA遇到scope provided 的坑
- [记录点滴] 一个Python中实现flatten的方法
- [源码解析]Oozie来龙去脉之提交任务
- [记录点滴]Ionic编译过程的研究
- [记录点滴]OpenResty 支持http v2的问题
- [源码解析]Oozie来龙去脉之内部执行
- [记录点滴]编译安装luarocks、luacheck、luautf8
- [笔记整理] 一维搜索
- [记录点滴] 使用工具和命令对redis数据进行备份恢复
- [记录点滴]Spring Boot Admin源码分析笔记
- [记录点滴] luaxml编译过程
- [源码解析] Flink UDAF 背后做了什么
- [源码解析] 当 Java Stream 遇见 Flink
- [源码解析] Flink的Slot究竟是什么?(1)