【Python学习笔记】-虚拟环境virtualenv
在开发python应用程序的时候,系统安装的python3只有一个版本:3.4。所有的第三方的包都回被pip安装到python3的site-packages目录下。
如果我们要要同时开发多个应用程序,那这些应用都共用一个python,就是安装在系统的python3。如果应用A需要jinja 2.7,而应用B需要jinja 2.6怎么办?
这种情况下,每个应用需要各自拥有一套“独立”的python运行环境。有两个常用工具用于创建python“独立”环境:
- venv is available by default in Python 3.3 and later, and installs pip and setuptools into created virtual environments in Python 3.4 and later.
- virtualenv needs to be installed separately, but supports Python 2.7+ and Python 3.3+, and pip, setuptools and wheel are always installed into created virtual environments by default (regardless of Python version).
virtualenv
https://virtualenv.readthedocs.io/en/latest/
virtualenv is a tool to create isolated Python environments.
创建一个拥有自己安装目录的环境, 这个环境不与其他虚拟环境共享库, 能够方便的管理python版本和管理python库
安装Virtualenv
$ pip install virtualenv
创建virtualenv
假定我们要开发一个新的项目,需要一套独立的python运行环境,可以这么做:
- 在项目目录下,创建一个独立的python运行环境,命名为 venv
virtualenv venv #创建一个名为ENV的目录, 并且安装了ENV/bin/python,创建了lib,include,bin目录,安装了pip
- lib,所有安装的python库都会放在这个目录中的lib/pythonx.x/site-packages/下
- bin,bin/python是在当前环境是使用的python解释器
如果在命令行中运行virtualenv --system-site-packages ENV, 会继承/usr/lib/python2.7/site-packages下的所有库, 最新版本virtualenv把访问全局site-packages作为默认行为
default behavior.
virtualenv --no-site-packages venv
加上了参数--no-site-packages,这样,已经安装到系统python环境中的所有第三方包都不会复制过来,这样,我们就得到了一个不带任何第三方包的“干净”的pyhton运行环境。
可以使用-p PYTHON_EXE选项在创建虚拟环境的时候指定python版本
#创建python2.7虚拟环境 virtualenv -p /usr/bin/python2.7 ENV2.7
#创建python3.4虚拟环境 virtualenv -p /usr/local/bin/python3.4 ENV3.4
激活virtualenv
新建的python环境被放到项目录下的venv目录,有了 venv 这个python环境,就可以用source进入该环境:
source ./venv/bin/activate
或者是
source ./venv/Scripts/activate
注意查看activate命令被放在了哪个目录下。
执行上面的命令后,可以看懂命令指示符变了,有个 (venv) 前缀,表示当前环境是一个名为 venv 的python环境,下面可以正常安装各种第三方包,并运行python命令。
在venv 环境下,用 pip 安装的包都在安装到了 venv 这个环境下,系统python环境不受任何影响,也就是说, venv环境是专门针对当前项目创建的。
关闭virtualenv
退出venv 环境,使用 deactivate 命令:deactivate
viratualenv是如何创建“独立”的python运行环境呢?其实就是把系统python复制一份到virtualenv的环境,用命令 source 进入一个virutalenv环境时,virtualenv会修改相关环节变量,让命令python和pip均指向当前的virtualenv环境。
venv
venv不用安装,不过需要python3.3以上。创建一个独立的python运行环境,命名为venv
python3 -m venv ./venv
上面的命令会在当前目录下创建一个名为venv的python环境中。进入和退出该环境的方式和virtualenv一致。
参考文档:
https://packaging.python.org/tutorials/installing-packages/#creating-virtual-environments 官方文档
【Python学习笔记】-虚拟环境virtualenv的更多相关文章
- python学习笔记(virtualenv下载安装)
之前博客评论中有人建议我面对多个python版本的情况.可以使用virtualenv这个python虚拟沙盒 首页是利用pip下载.关于pip如何下载安装前面的博客中已经提到就不细说 cmd直接进入p ...
- 雨痕 的《Python学习笔记》--附脑图(转)
原文:http://www.pythoner.com/148.html 近日,在某微博上看到有人推荐了 雨痕 的<Python学习笔记>,从github上下载下来看了下,确实很不错. 注意 ...
- python学习笔记整理——字典
python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...
- VS2013中Python学习笔记[Django Web的第一个网页]
前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...
- python学习笔记之module && package
个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...
- python学习笔记(六)文件夹遍历,异常处理
python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...
- python学习笔记--Django入门四 管理站点--二
接上一节 python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...
- python学习笔记--Django入门0 安装dangjo
经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...
- python学习笔记(一)元组,序列,字典
python学习笔记(一)元组,序列,字典
- Pythoner | 你像从前一样的Python学习笔记
Pythoner | 你像从前一样的Python学习笔记 Pythoner
随机推荐
- ORM & sequelize
ORM Object Relational Mapping 对象关系映射 Table => Object, 简化 SQL 查询命令的编写 https://en.wikipedia.org/wik ...
- Linux & bash & tcpdump
Linux & bash & tcpdump Linux & tcpdump https://www.tecmint.com/12-tcpdump-commands-a-net ...
- Java线程池状态和状态切换
摘要 介绍线程池的五种状态RUNNING.SHUTDOWN.STOP.TIDYING和TERMINATED,并简述五种状态之间的切换. 在类ThreadPoolExecutor中定义了一个成员变量 ...
- Docker Tips: 关于/var/run/docker.sock
本文转载自Docker Tips: 关于/var/run/docker.sock 导语 你可能已经运行过docker hub上的container并且注意到其中的一些需要绑定挂载(mount)/var ...
- Flex实现复杂布局
巧妙利用边框(或者背景颜色)来进行布局. 填上内容和图片(由设计提供切图). 去掉边框. css .business-content-1 { display: flex; /* 弹性布局 */ mar ...
- Mybites学习
参考链接:https://www.cnblogs.com/dongying/p/4073259.html <select <!-- 1. id (必须配置) id是命名空间中的唯一标识符, ...
- 微信小程序:单选框radio和复选框CheckBox
单选框radio: 可以通过color属性来修改颜色. 复选框checkbox:
- Socket实现简单聊天
服务端: package main.java.com.socket_dome; import java.io.IOException; import java.io.InputStream; impo ...
- 2020年Python最新面试题(一):Python基础
转: 2020年Python最新面试题(一):Python基础 目录 1. 什么是 Python?使用 Python 有什么好处? 2. Python中常用的关键字有哪些? 3. Python 2.x ...
- mpvue 开发微信小程序搭建项目
首先 mpvue 是一款基于vue的框架,mpvue 修改了 Vue.js 的 runtime 和 compile 实现,可以运行在小程序的环境中. 第一步:安装 vue-cli vue-cli是vu ...