当前位置: 首页 > 编程日记 > 正文

python安装虚拟环境virtualenv

虚拟环境

虚拟环境是一个将不同项目所需求的依赖分别放在独立的地方的一个工具,它给这些工程创建虚拟的Python环境。它解决了“项目X依赖于版本1.x,而项目Y需要项目4.x”的两难问题,而且使你的全局site-packages目录保持干净和可管理。

比如,你可以工作在一个需求Django 1.3的工程,同时维护一个需求Django 1.0的工程。

virtualenv

virtualenv 是一个创建隔绝的Python环境的工具。virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用Python工程所需的包。

通过pip安装virtualenv:

$ pip install virtualenv

基本使用

  1. 为一个工程创建一个虚拟环境:
$ cd my_project_folder
$ virtualenv venv

virtualenv venv 将会在当前的目录中创建一个文件夹,包含了Python可执行文件,以及pip 库的一份拷贝,这样就能安装其他包了。虚拟环境的名字(此例中是 venv )可以是任意的;若省略名字将会把文件均放在当前目录。

在任何你运行命令的目录中,这会创建Python的拷贝,并将之放在叫做 venv 的文件中。

你可以选择使用一个Python解释器:

$ virtualenv -p /usr/bin/python2.7 venv

这将会使用 /usr/bin/python2.7 中的Python解释器。

  1. 要开始使用虚拟环境,其需要被激活:
$ source venv/bin/activate

当前虚拟环境的名字会显示在提示符左侧(比如说 (venv)你的电脑:你的工程 用户名$)以让你知道它是激活的。从现在起,任何你使用pip安装的包将会放在 ``venv 文件夹中,与全局安装的Python隔绝开。

像平常一样安装包,比如:

$ pip install requests
  1. 如果你在虚拟环境中暂时完成了工作,则可以停用它:
$ deactivate

这将会回到系统默认的Python解释器,包括已安装的库也会回到默认的。

要删除一个虚拟环境,只需删除它的文件夹。(要这么做请执行 rm -rf venv )

然后一段时间后,你可能会有很多个虚拟环境散落在系统各处,你将有可能忘记它们的名字或者位置。

其他注意

运行带 --no-site-packages 选项的 virtualenv 将不会包括全局安装的包。这可用于保持包列表干净,以防以后需要访问它。(这在 virtualenv 1.7及之后是默认行为)

为了保持你的环境的一致性,“冷冻住(freeze)”环境包当前的状态是个好主意。要这么做,请运行:

$ pip freeze > requirements.txt

这将会创建一个 requirements.txt 文件,其中包含了当前环境中所有包及各自的版本的简单列表。你可以使用 “pip list”在不产生requirements文件的情况下,查看已安装包的列表。这将会使另一个不同的开发者(或者是你,如果你需要重新创建这样的环境)在以后安装相同版本的相同包变得容易。

$ pip install -r requirements.txt

这能帮助确保安装、部署和开发者之间的一致性。

最后,记住在源码版本控制中排除掉虚拟环境文件夹,可在ignore的列表中加上它。

virtualenvwrapper

virtualenvwrapper 提供了一系列命令使得和虚拟环境工作变得愉快许多。它把你所有的虚拟环境都放在一个地方。

安装(确保 virtualenv 已经安装了):

$ pip install virtualenvwrapper
$ export WORKON_HOME=~/Envs
$ source /usr/local/bin/virtualenvwrapper.sh 

(virtualenvwrapper 的完整安装指引.)

对于Windows,你可以使用 virtualenvwrapper-win 。

To install (make sure virtualenv is already installed): 安装(确保 virtualenv 已经安装了):

$ pip install virtualenvwrapper-win

在Windows中,WORKON_HOME默认的路径是 %USERPROFILE%Envs 。

基本使用

  1. 创建一个虚拟环境:
$ mkvirtualenv venv

这会在 ~/Envs 中创建 venv 文件夹。

  1. 在虚拟环境上工作:
$ workon venv

或者,你可以创建一个项目,它会创建虚拟环境,并在 $PROJECT_HOME 中创建一个项目目录。当你使用 workon myproject 时,会 cd -ed 到项目目录中。

$ mkproject myproject

virtualenvwrapper 提供环境名字的tab补全功能。当你有很多环境,并且很难记住它们的名字时,这就显得很有用。

workon 也能停止你当前所在的环境,所以你可以在环境之间快速的切换。

  1. 停止是一样的:
$ deactivate
  1. 删除:
$ rmvirtualenv venv



0x04 virtualenvwrapper 切换版本

virtualenvwrapper是管理Python虚拟环境的工具,可以很方便的为不同的项目建立独立的环境,每个项目都可以安装自己的依赖,同时也支持在不同的虚拟环境中存在不同版本的Python。

首先安装virtualenvwrapper,可以选择apt安装或者pip安装

apt安装

$ sudo apt-get install virtualenvwrapper

pip安装

$ sudo pip install virtualenvwrapper

当你需要使用Python2开发项目时,建立一个Python2的虚拟环境:

$ mkvirtualenv -p /usr/bin/python2 env27

当你需要Python3开发时:

$ mkvirtualenv -p /usr/bin/python3.4 env34

然后可以随时切换不同的虚拟环境:

$ workon env27  # 进入Python2环境
$ workon env34  # 进入Python3环境

更爽的是,你可以在进入虚拟环境的同时切换到项目目录,只需要编辑 $VIRTUAL_ENV/bin/postactivate 这个文件即可:

$ vim $VIRTUAL_ENV/bin/postactivate  #前提是已经进入对应的虚拟环境

在文件中添加切换目录的命令:

cd  /path/to/your/project


其他有用的命令

lsvirtualenv
列举所有的环境。
cdvirtualenv
导航到当前激活的虚拟环境的目录中,比如说这样你就能够浏览它的 site-packages
cdsitepackages
和上面的类似,但是是直接进入到 site-packages 目录中。
lssitepackages
显示 site-packages 目录中的内容。

virtualenvwrapper 命令的完全列表 。

virtualenv-burrito

有了 virtualenv-burrito ,你就能使用单行命令拥有virtualenv + virtualenvwrapper的环境。

autoenv

当你 cd 进入一个包含 .env 的目录中,就会 autoenv 自动激活那个环境。

使用 brew 在Mac OS X上安装它:

$ brew install autoenv

在Linux上:

$ git clone git://github.com/kennethreitz/autoenv.git ~/.autoenv
$ echo 'source ~/.autoenv/activate.sh' >> ~/.bashrc

转载于:https://www.cnblogs.com/xiongmozhou/p/9102646.html

相关文章:

可变分区存储管理实验报告总结_操作系统实验报告-可变分区存储管理方式的内存分配回收...

一.实验目的(1)深入了解可变分区存储管理方式的内存分配回收的实现。二.实验内容编写程序完成可变分区存储管理方式的内存分配回收,要求有内存空间分配表,并采用最优适应算法完成内存的分配与回收。三.实验原理在可变分…

ubuntu/linuxmint如何添加和删除PPA源

【添加】 1、sudo add-apt-repository ppa:user/ppa-name 2、sudo apt-get update (然后再安装软件sudo apt-get install <package-name>或更新软件sudo apt-get upgrade) 【删除】 1、cd /etc/apt/source.list.d/ 2、sudo rm <ppa-name> 转载于:https://www.cnblo…

了解EOS看这一篇就够了一、团队二、技术三、项目进度四、争议和风险五、展望

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 无论是混迹于币圈、链圈还是矿圈&#xff0c;对BTC&#xff08;比特币&#xff09;、ETH&#xff08;以太坊&#xff09;、EOS这三大主流币一定不会…

qt 多个模型如何显示在表格中_Qt MOOC系列教程 第五章第四节:QML中的C++模型

我们已经多次讨论过如何创建自己的模型来表示QML中的数据&#xff0c;并且在上一节中我们看到了QStandardItemModel的基本示例。通常&#xff0c;出于性能和功能方面的原因&#xff0c;需要从一开始就要实现自己的模型。QAbstactItemModel类为项目模型类提供了抽象接口&#xf…

ubuntu终端基础命令

1. 启动终端的快捷键: ctr alt t2. 终端字体放大: ctrshift3. 终端字体放大: ctr-4. ls : 查看当前目录的文件信息 4.1 ls 路径&#xff1a; 查看指定目录的信息 4.1. pwd: 查看目录所在的路径5. touch: 创建文件 5.1 touch 1.txt 2.txt 创建多个文件6. mkdir: 创建…

js中操作数组的一些方法

增 push 在数组的末尾添加一个或多个元素&#xff0c;并返回新的长度。 array.push(1,2,3.........) unshift 在数组的开头添加一个或多个元素&#xff0c;并返回新的长度。 array.unshift(1,2,3......) splice 在制定位置添加一个活多个元素&#xff0c;splice(s…

a标签怎么传参_jsp页面中怎么利用a标签的href进行传递参数以及需要注意的地方...

jsp页面中&#xff1a;这是正确写法。需要注意的地方&#xff1a;1、传递的参数是数字2、传递的参数是字符串注意多了个单引号后台直接用request.getParameter("productIdStr"); 接收就可以了。此处也有要注意的地方&#xff1a;接收后要进行判空&#xff0c;否则会报…

转】windows下使用批处理脚本实现多个版本的JDK切换

原博文出自于:  http://www.cnblogs.com/xdp-gacl/p/5209386.html      感谢&#xff01; 一.JDK版本切换批处理脚本 我们平时在window上做开发的时候&#xff0c;可能需要同时开发两个甚至多个项目&#xff0c;有时不同的项目对JDK的版本要求有区别&#xff0c;这时候…

mysql引擎介绍

1.myisam存储引擎&#xff1a;不支持事务&#xff0c;也不支持外键&#xff0c;优势是访问速度快&#xff0c;对事务完整性没有要求或者以select&#xff0c;insert为主的应用基本上可以用这个引擎来创建表。 2.innodb存储引擎&#xff1a;innodb引擎提供了具有提交&#xff0c…

为什么2100万个BTC发行总量少了0.0231?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 许多人只是听说比特币的总数为2100万个&#xff0c;但不知道这个数字的准确来源。实际上&#xff0c;2100万个只是一个近似数&#xff0c;精确的数…

Navicat连接数据库成功,新建查询时提示错误“Cannot create file ……”

Navicat连接数据库成功&#xff0c;新建查询时提示错误“Cannot create file ……” 原因:编辑连接{高级}<设置位置>被修改&#xff0c;该oci.dll不正确 解决方案&#xff1a;删除该连接信息&#xff0c;重新新建。编辑连接{高级}<设置位置>会自动生成&#xff0c;…

[深入React] 2.综述

在开始本教程前&#xff0c;请先查看官方示例&#xff1a;https://github.com/facebook/react/archive/master.zip 里的 examples 目录。 学习react是一个循序渐进的过程&#xff0c;虽然它概念较少&#xff0c;但在思想上和jQuery相差甚远。我在学的时候也是边开发边查官方文档…

element select 自动展开_原生js 让select下拉框自动展开 可用size 属性来代替展开动作...

找遍全网都没一个比较好的例子&#xff01;&#xff01;&#xff01;什么获得焦点事件&#xff0c;或者添加一个点击事件都不能使下拉框自动展开最后用标签的siz属性定义和用法size 属性规定下拉列表中可见选项的数目。如果 size 属性的值大于 1&#xff0c;但是小于列表中选项…

一文看懂怎样用 Python 创建比特币交易

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 比特币价格的上上下下&#xff0c;始终撩动着每一个人无比关切的小心脏。从去年初的 800 美元左右&#xff0c;飞涨到去年底到 19783.21 美元最高点…

[转]mysql 数据类型

原文地址:https://github.com/jaywcjlove/handbook/blob/master/MySQL/MySQL%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B.md MySQL数据类型 数字类型 整数: tinyint、smallint、mediumint、int、bigint浮点数: float、double、real、decimal日期和时间: date、time、datetime、times…

dev treeview控件_在Winform开发框架中使用DevExpress的TreeList和TreeListLookupEdit控件

DevExpress提供的树形列表控件TreeList和树形下拉列表控件TreeListLookupEdit都是非常强大的一个控件&#xff0c;它和我们传统Winform的TreeView控件使用上有所不同&#xff0c;我一般在Winform开发中根据情况混合使用这些控件&#xff0c;不过整体来看&#xff0c;基于DevExp…

util包下的Date与sql包下的Date之间的转换

Java中的时间类型 java.sql包下给出三个与数据库相关的日期时间类型&#xff0c;分别是&#xff1a; Date&#xff1a;表示日期&#xff0c;只有年月日&#xff0c;没有时分秒。会丢失时间&#xff1b; Time&#xff1a;表示时间&#xff0c;只有时分秒&#xff0c;没有年月日。…

【MySQL解惑笔记】忘记MySQL数据库密码

破解MySQL密码 一、MySQL5.7.5之前 只要有系统root密码就可以破解&#xff1a; [roothost-131 ~]# vim /etc/my.cnf //在配置文件中加入如下内容 [mysqld] skip-grant-tables[roothost-131 ~]# systemctl restart mysqld //重启…

接口自动化测试框架

现在市面上做接口测试的工具很多&#xff0c;比如Postman&#xff0c;soapUI, JMeter, Python unittest等等&#xff0c;各种不同的测试工具拥有不同的特色。但市面上的接口测试工具都存在一个问题就是无法完全吻合的去适用没一个项目&#xff0c;比如数据的处理&#xff0c;加…

arcpy实现空间查询_布隆过滤!Python实现亿级数据集中元素快速查找

前段时间在做数据碰撞分析时&#xff0c;遇到一个在数亿级的int型数据集中查找30万个特定int值是否存在的需求&#xff0c;当时尝试了几种方式通过分片&#xff0c;然后做增量分析HashMap这两种方式第一种太慢&#xff0c;即使后面进一步实现了分布式计算&#xff0c;可仍然无法…

比特币如何实现—《区块链历史链条》2

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 11比特币为什么还没有挖完 比特币系统靠调节难度系数保证比特币不被太快挖完。每10分钟&#xff0c;全网矿工共同计算一道难题&#xff0c;竞争记账…

centos7 系统下搭建 lnmp 环境

目录 目录概述准备工作开始编译安装1. 安装 Nginx1. 解压2. 环境准备3. 编译过程4. Nginx 服务2. 安装 MySQL1. 解压2. 环境准备3. 安装 CMake 编译器&#xff1a;4. 编译过程5. 初始化数据库6. MySQL 服务3. 安装 PHP1. 安装依赖包2. 编译安装3. 配置 PHP4. 整合 LNMP1 编辑 N…

dp uva1218

题目链接 一共有三种状态&#xff1a; 1、d[u][0]&#xff1a;u是服务器&#xff0c;每个子结点可以是也可以不是。 2、d[u][1]&#xff1a;u不是服务器&#xff0c;但u的父亲是&#xff0c;u的子结点都不是服务器。 3、d[u][2]&#xff1a;u和u的父亲都不是服务器&#xff0c;…

浏览器安全检查己通过_百度主动推送三项合一功能

百度主动推送三项合一功能作者&#xff1a;68喜功能模块&#xff1a;搜索关键词记录推送熊掌号当天推送熊掌号历史推送普通主动推送*///错误显示屏蔽error_reporting(E_ERROR | E_WARNING | E_PARSE);require ./common.inc.php; //引入公用函数$starid 1; //初始ID 开$limit…

EOS账户权限

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 账户和权限 钱包 账户 授权和权限 其他 默认账户配置(单个签名) 多签名账户和自定义权限 帐户是存储在区块链中的人类可读标识符。 每个交易都根据…

怎样在表格中选出同一类_3分钟教会你如何将不同表格中的数据关联在一起

原标题&#xff1a; 3分钟教会你如何将不同表格中的数据关联在一起版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。智能输入超级表格 微视频关键词&#xff1a; 智能输入 关联不同表格 逻辑输入「超级表格微视频」第六期提升效率、 增强免疫力&…

矢量图面层和线层相交得到相交后的线层文件(gis相交)

目的&#xff1a;将arcgis里的面层和线层相交(重叠)部分的线单独生成一个shp文件&#xff0c;用于道路路网密度计算等。注意&#xff1a;进行相交运算后生成的是线要素文件&#xff0c;相当于把面线相交部分的线单独拿了出来。操作例子&#xff1a;将图示的面层和线层相交处理。…

区块链3.0:拥抱EOS

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 EOS是当下最火的区块链技术&#xff0c;被社会广泛看好为下一代区块链3.0。不同于以太坊的学习&#xff0c;EOS的主语言是C&#xff0c;本文作为EO…

python3.9.0 print_关于 Python 3.9,那些你不知道的事

原标题&#xff1a;关于 Python 3.9&#xff0c;那些你不知道的事作者 | Ayushi Rawat编译 | 高卫华题图 | 视觉中国Python一直在满足社区需求&#xff0c;并且将成为未来使用最多的语言。Python的下一个版本带来了更快速的进程释放&#xff0c;性能的提升&#xff0c;简便的新…

djangorestframework怎么这么好用!

一年前就已经用过restframework, 当时觉得这个只是给web框架打辅助的, 他能实现的我也都实现(可能没有那么好用, 嘿嘿) 但是我有一种东西叫做效率, 时间就是金钱, 别人造好的就直接用就可以了, 自己其实没必要在去重复. 最近写一个调查问卷系统, 利用了以下知识点 1. django 2.…