python虚拟环境设置
Windows下的python虚拟环境设置:
virtualenv
在python开发中,我们可能会遇到一种情况:就是当前的项目依赖的是某一个版本,但是另一个项目依赖的是另一个版本,这样就会造成依赖冲突。在这种情况之下,我们就需要一个工具能够将这两种或几种不同版本的环境隔离开来,需要哪个版本就切换到哪个版本做为默认版本,让每个版本应用都各自拥有一套“独立”的Python运行环境。而virtualenv就可以解决这种情况,它通过创建一个虚拟化的python运行环境,在同一计算机中隔离多个python版本的工具,将我们所需的依赖安装进不同的虚拟环境中,使不同项目之间相互独立、不干扰。也就是说在这个环境中你可以安装私有包,而且不会影响系统中安装的全局Python解释器。
安装: pip install virtualenv
如果安装不成功也可以下载virtualenv源码package,通过执行setup.py来安装virtualenv。同时因为python2和python3的不同,因此也有了两种pip和pip3两种python包安装工具,而两种工具安装的virtualenv也是不相同的,python2安装的virtualenv虚拟化出来的python运行环境是python2的,python3安装的virtualenv默认虚拟环境则是python3的。
使用方法
- 创建环境:进入要创建的虚拟环境的目录执行下面的命令;
virtualenv [环境名]
这会在当前目录下创建一个独立的Python运行环境,可使用 virtualenv --help 来查看如何使用。
- 使用环境
新建的Python环境被放到当前目录下的[环境名] 目录。有了[环境名] 这个Python环境:
激活虚拟化环境: [环境名]\Scripts\activate
激活后在命令行的前面会出现新环境名称,表示当前环境是一个名为[环境名] 的Python环境,接下来可使用pip命令安装新环境需要的各种包。(pip命令在创建新环境时自带)
- 退出虚拟环境
deactivate
此时就回到了正常的环境,现在pip或python均是在系统Python环境下执行。
完全可以针对每个应用创建独立的Python运行环境,这样就可以对每个应用的Python环境进行隔离。
virtualenv是如何创建“独立”的Python运行环境的呢?原理很简单,就是把系统Python复制一份到virtualenv的环境,用命令[环境名]\Scripts\activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。
如果要删除虚拟环境,只需退出虚拟环境后,删除对应的虚拟环境目录即可。不影响其他环境。
virtualenvwrapper
virtualenvwrapper是基于virtualenv之上的工具扩展管理包,它将所有的虚拟环境统一起来,用于更方便管理虚拟环境,它可以做:
将所有虚拟环境整合在一个目录下
管理(新增,删除,复制)虚拟环境
切换虚拟环境
安装
pip install virtualenvwrapper-win
默认创建的虚拟环境位于C:\Users\username\envs,可以通过环境变量WORKON_HOME来定制。
通过计算机-->属性-->高级系统设置-->环境变量-->在系统变量中新建“变量名”:WORKON_HOME,变量值:“你自定义的路径”。
使用方法
所有的命令可使用:virtualenvwrapper --help 进行查看;
创建基本环境:
mkvirtualenv [环境名]
创建成功之后就会在刚才的WORKON_HOME所设置的目录下创建指定的虚拟环境并且自动进入,退出的话也是使用deactivate。再次进入的话,就不用向virtualenv那样去寻找路径,直接可以使用命令就可以进入虚拟环境:
workon [环境名]
常用的命令还有:
删除环境:rmvirtualenv [环境名]
列出所有环境:workon 或者 lsvirtualenv -b
原文地址:https://www.cnblogs.com/zhufanyu/p/12049696.html
- POJ 1655 Balancing Act【树的重心】
- 2017 Multi-University Training Contest - Team 1 1006&&HDU 6038 Function【DFS+数论】
- 2017 Multi-University Training Contest - Team 1 1002&&HDU 6034 Balala Power!【字符串,贪心+排序】
- POJ 3662 Telephone Lines【Dijkstra最短路+二分求解】
- 洛谷 P1177 【模板】快速排序【13种排序模版】
- 一步一步深入理解Dijkstra算法
- 51 Nod 1791 合法括号子段【分治+字符串】
- ifconfig: command not found CentOS专版,其他的可以参考
- Codeforces 833E Caramel Clouds
- Codeforces 833D Red-black Cobweb【树分治】
- Codeforces 834E The Bakery【枚举+数位dp】
- 【Java学习笔记之一】java关键字及作用
- 如何让所有实体类用相同名称的主键(很有力的问题,比如所有表实体主键都用ID)
- Codeforces 834D The Bakery【dp+线段树维护+lazy】
- 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 数组属性和方法