Windows中安装使用Virtualenv来创建独立Python环境


Posted in Python onMay 31, 2016

0、什么时候会用到virtualenv?
假设系统中的两个应用,其中A应用对库LibFoo的版本要求为1,而B应用对同一个库LibFoo的版本要求为2,两个应用对同一个库的要求想冲突了,而系统中库默认都安装到/usr/lib/python2.7/site-packages,那么如何能够同时使用这两个应用呢?
你的用户权限不够,使得无法将包安装到site-packages目录
需要使用一个应用,并且与系统其它应用相独立。
如果你遇到以上的问题,那么virtualenv会对你有帮助。virtualenv可以创建一个环境,拥有着自己的安装目录,而不会与系统的共享库或者其它virtualenv环境相干扰。

1、安装virtualenv
在安装virtualenv之前,我们需要安装至少有一个版本的Python;因为virtualenv是python的一个第三方模块,必须基于python环境才能安装;
如果你的python环境有pip,那么直接使用命令:

pip install virtualenv
安装即可;否则需要下载源码,然后使用命令:python install setup.py 来安装
安装之后需要新建virtualenv的独立环境,具体可以查看其帮助命令:
virtualenv -h
Windows中安装使用Virtualenv来创建独立Python环境

常用的参数有:
-p:指定一个版本python环境;通常当你的系统中安装了多个python版本时会用到;默认情况下virtualenv会优先选取它的宿主python环境,即它安装在那个python版本下就会默认选择哪个版本作为默认python隔离环境。
--no-site-packages:不使用系统环境的python安装包,即隔离包中不能使用真实python环境的安装包;当前版本这个选项是默认的。
--system-site-packages:与上面相反,使隔离环境能访问系统环境的python安装包
--distribute:copy一个python环境的分支,默认会安装setup、pip、wheel等基础模块

2、激活
安装完了之后就可以创建一个隔离环境了,使用命令:

virtualenv envname ##创建一个新的隔离环境 
cd envname 
Scripts\activate  ##激活并切换到virtualenv环境
3、使用
创建并激活virtualenv环境后我们就可以正常的方式来使用和安装python安装包及模块了。也可以直接切换到需要执行的python文件目录,使用python xxx.py来保证在隔离环境下执行python文件。
即:我们在需要使用virtualenv环境之前,只要先激活然后使用以往同样的方式来执行python操作、运行python文件即可

Windows中安装使用Virtualenv来创建独立Python环境

cd my_project_folder
virtual ENV
source bin/activate
deactivate

以上就是virtualenv的基本使用过程。首先,virtual ENV会在当前目录创建名为ENV的虚拟环境,此时在当前目录会自动生成三个目录:bin, include和lib。默认情况下创建的虚拟环境会依赖于系统中的site-packages,即系统中已经安装好的库在虚拟环境中仍然可以使用,如果想去除依赖,那么可以:

virtualenv --no-site-packages ENV
。通过source bin/activate可以启动当前目录下的虚拟环境。启动后,shell的提示符就会发生改变,表示进入了虚拟环境。使用deactivate离开虚拟环境。

4、集成到开发环境
当前在PyCharm中是支持virtualenv环境集成的,其它的IDE暂时未研究,集成也是很方便的:
(1)新建一个项目
(2)点击解释器栏的设置icon
(3)选择virtualenv
(4)可以新建也可以选择一个已有的virtualenv环境

Windows中安装使用Virtualenv来创建独立Python环境

配置到之后我们也可以在该项目中测试下,选择一个区别与系统环境的安装模块,查看下其版本是否正确,我这里因为有2个django版本,所以使用django模块来测试的,得到的是正确的结果。

Windows中安装使用Virtualenv来创建独立Python环境

Python 相关文章推荐
探究Python中isalnum()方法的使用
May 18 Python
Python数据结构之哈夫曼树定义与使用方法示例
Apr 22 Python
Python实现的简单排列组合算法示例
Jul 04 Python
Python3 读、写Excel文件的操作方法
Oct 20 Python
Python通用循环的构造方法实例分析
Dec 19 Python
python七夕浪漫表白源码
Apr 05 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
Jul 16 Python
全面了解django的缓存机制及使用方法
Jul 22 Python
python快速排序的实现及运行时间比较
Nov 22 Python
Python3读取和写入excel表格数据的示例代码
Jun 09 Python
pandas apply多线程实现代码
Aug 17 Python
Python手拉手教你爬取贝壳房源数据的实战教程
May 21 Python
Windows下Python使用Pandas模块操作Excel文件的教程
May 31 #Python
深入理解python中的浅拷贝和深拷贝
May 30 #Python
浅谈Python的文件类型
May 30 #Python
python中string模块各属性以及函数的用法介绍
May 30 #Python
Python 常用string函数详解
May 30 #Python
整理Python 常用string函数(收藏)
May 30 #Python
深入浅析python继承问题
May 29 #Python
You might like
PHP 和 MySQL 开发的 8 个技巧
2007/01/02 PHP
php算开始时间到过期时间的相隔的天数
2011/01/12 PHP
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
php实现将HTML页面转换成word并且保存的方法
2016/10/14 PHP
php 数据结构之链表队列
2017/10/17 PHP
js中关于一个分号的崩溃示例
2013/11/11 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
jQuery中的通配符选择器使用总结
2016/05/30 Javascript
javascript与jquery动态创建html元素示例
2016/07/25 Javascript
使用JSON作为函数的参数的优缺点
2016/10/27 Javascript
Bootstrap基本插件学习笔记之Popover提示框(19)
2016/12/08 Javascript
JavaScript数组操作详解
2017/02/04 Javascript
javascript使用btoa和atob来进行Base64转码和解码
2017/03/20 Javascript
nodejs爬虫遇到的乱码问题汇总
2017/04/07 NodeJs
Vue侧滑菜单组件——DrawerLayout
2017/12/18 Javascript
js中如何完美的解析数据
2018/03/18 Javascript
js实现列表向上无限滚动
2020/01/13 Javascript
JS基础之逻辑结构与循环操作示例
2020/01/19 Javascript
js实现百度淘宝搜索功能
2020/02/17 Javascript
Javascript节流函数throttle和防抖函数debounce
2020/12/03 Javascript
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
为什么黑客都用python(123个黑客必备的Python工具)
2020/01/31 Python
匡威英国官网:Converse英国
2018/12/02 全球购物
军训自我鉴定200字
2014/02/13 职场文书
中文专业求职信
2014/06/20 职场文书
无刑事犯罪记录证明
2014/09/18 职场文书
南湾猴岛导游词
2015/02/09 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
行政介绍信范文
2015/05/04 职场文书
简单了解 MySQL 中相关的锁
2021/05/25 MySQL
go语言中http超时引发的事故解决
2021/06/02 Golang
68行Python代码实现带难度升级的贪吃蛇
2022/01/18 Python