读完需要

9

分钟

1. 什么是虚拟环境?

虚拟环境的意义,就如同 虚拟机 一样,它可以实现不同环境中Python依赖包相互独立,互不干扰。这在一定程度的意义上,给了我们的项目一份很有力的保障。在这里,我把它戏称为「保险」。全网唯一。

举个例子吧。

假设我们的电脑里有两个项目,他们都用到同一个第三方包,本来一切都顺利。但是由于某种原因,项目B由于某些原因要使用这个第三方包的一些新特性(新版本才有),而如果就这样贸然升级了,对项目A的影响我们无法评估,这个时候我们就特别需要有一种解决方案可以让项目A和B,处于两个不同的Python环境中。互不影响。

为了方便大家对虚拟环境有个认识,我列举了下其优点:

  • 使不同应用开发环境独立

  • 环境升级不影响其他应用,也不会影响全局的python环境

  • 可以防止系统中出现包管理混乱和版本的冲突

市场上管理 Python 版本和环境的工具有很多,这里列举几个:

  • p:非常简单的交互式 python 版本管理工具。

  • pyenv:简单的 Python 版本管理工具。

  • Vex:可以在虚拟环境中执行命令。

  • virtualenv:创建独立 Python 环境的工具。

virtualenvwrapper:virtualenv 的一组扩展。

工具很多,但个人认为最好用的,当属 virtualenvwrapper,推荐大家也使用。

2.virtualenv

由于 virtualenvwrapper 是 virtualenv 的一组扩展,所以如果要使用 virtualenvwrapper,就必须先安装 virtualenv。

安装

  1. pip install virtualenv# 检查版本virtualenv --version

由于virtualenv创建虚拟环境是在当前环境下创建的。所以我们要准备一个专门存放虚拟环境的目录。(以下操作在Linux在完成,windows相对简单,请自行完成,有不明白的请qq与我联系。)

创建

准备目录并进行$ mkdir -p /home/wangbm/Envs$ cd !$# 创建虚拟环境(按默认的Python版本)# 执行完,当前目录下会有一个my_env01的目录$ virtualenv my_env01# 你也可以指定版本$ virtualenv -p /usr/bin/python2.7 my_env01$ virtualenv -p /usr/bin/python3.6 my_env02# 你肯定觉得每次都要指定版本,相当麻烦吧?# 在Linux下,你可以把这个选项写进入环境变量中$ echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7" >> ~/.bashrc



  在这里还是要推荐下我自己建的Python开发学习群:725479218,群里都是学Python开发的,如果你正在学习Python ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2018最新的Python进阶资料和高级开发教程,欢迎进阶中和进想深入Python的小伙伴



进入/退出

  1. $ cd /home/wangbm/Envs# 进入
  2. $ source my_env01/bin/activate# 退出$ deactivate

删除虚拟环境,只需删除对应的文件夹就行了。并不会影响全局的Python和其他环境。

  1. $ cd /home/wangbm/Envs$ rm -rf my_env01

注意:创建的虚拟环境,不会包含原生全局环境的第三方包,其会保证新建虚拟环境的干净。

如果你需要和全局环境使用相同的第三方包。可以使用如下方法:

  1. # 导出依赖包$ pip freeze > requirements.txt
  2. # 安装依赖包$ pip install -r requirements.txt

3 . virtualenvwrapper

virtualenv 虽然已经相当好用了,可是功能还是不够完善。

你可能也发现了,要进入虚拟环境,必须得牢记之前设置的虚拟环境目录,如果你每次按规矩来,都将环境安装在固定目录下也没啥事。但是很多情况下,人是会懒惰的,到时可能会有很多个虚拟环境散落在系统各处,你将有可能忘记它们的名字或者位置。

还有一点,virtualenv 切换环境需要两步,退出 -> 进入。不够简便。

为了解决这两个问题,virtualenvwrapper就诞生了。

安装

  1. # 安装 - Linuxpip install virtualenvwrapper
  2. # 安装 - Windowspip install virtualenvwrapper-win

配置先find一下virtualenvwrapper.sh文件的位置

  1. find / -name virtualenvwrapper.sh
  2. # /usr/bin/virtualenvwrapper.sh

在~/.bashrc 文件新增

  1. export WORKON_HOME=$HOME/.virtualenvsexport PROJECT_HOME=$HOME/workspaceexport VIRTUALENVWRAPPER_SCRIPT=/usr/bin/virtualenvwrapper.shsource /usr/bin/virtualenvwrapper.sh

实战演示

接下来,一起来看看,如何使用在我们的开发中使用我们的虚拟环境呢

通常我们使用的场景有如下几种

  • 交互式中

  • PyCharm中

  • 工程中

接下来,我将一一展示。

交互式中

先对比下,全局环境和虚拟环境的区别,全局环境中有requests包,而虚拟环境中并未安装。当我们敲入 workon my_env01,前面有 my_env01的标识,说明我们已经处在虚拟环境中。后面所有的操作,都将在虚拟环境下执行。

工程项目中

我们的工程项目,都有一个入口文件,仔细观察,其首行可以指定Python解释器。

倘若我们要在虚拟环境中运行这个项目,只要更改这个文件头部即可。

现在我还是以,import requests 为例,来说明,是否是在虚拟环境下运行的,如果是,则和上面一样,会报错。

文件内容:

  1. #!/root/.virtualenvs/my_env01/bin/pythonimport requestsprint "ok"

运行前,注意添加执行权限。

  1. $ chmod +x ming.py

好了。来执行一下

  1. $ ./ming.py

发现和预期一样,真的报错了。说明我们指定的虚拟环境有效果。

PyCharm中

点击 File - Settings - Project - Interpreter

点击小齿轮。如图点击添加,按提示添加一个虚拟环境。然后点 OK 就可以使用这个虚拟环境,之后的项目都会在这个虚拟环境下运行。

好啦!以上就是本期的全部内容。

学完本章,快去为你的项目买一份「保险」吧。

开发工具|给你的项目买份保险:Python虚拟环境的更多相关文章

  1. 使用Android ADT最新开发工具后,新建项目出现appcompat v7 他是什么?

    做Android开发的朋友最近会发现,更新ADT至22.6.0版本之后,创建新的安装项目,会出现appcompat_v7的内容.并且是创建一个新的内容就会出现.这到底是怎么回事呢?原来appcompa ...

  2. IDEA开发工具使用 git 创建项目、拉取分支、合并分支

    转载自:https://blog.csdn.net/qq_39470733/article/details/80366435 工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有 ...

  3. SharePoint 2013常用开发工具分享

    众所周知,一款好的开发工具不仅能提高项目开发效率,而且能够协助开发人员简化开发流程.本文汇总几款SharePoint 2013开发常用开发工具,希望能够对大家有所帮助.如果您有更好的工具,没有包含在本 ...

  4. 微信小程序开发工具使用与设计规范(二)

    [未经作者本人同意,请勿以任何形式转载] 上一篇文章主要分析了微信小程序应用场景和优劣势.本篇你可以学习到: 如何使用小程序开发工具写一个Hello World 微信小程序设计规范 微信小程序项目结构 ...

  5. oschina 开发工具

    开发工具 29反编译工具 26持续集成系统 19SQL注入工具 139Git开源工具 138Java开发工具 43.NET开发工具 85PHP开发工具 96C/C++开发工具 70Ruby/Rails ...

  6. SharePoint 2013常用开发工具

    SharePoint 2013常用开发工具分享 2014-04-01 00:59 by jv9, 589 阅读, 1 评论, 收藏, 编辑 众所周知,一款好的开发工具不仅能提高项目开发效率,而且能够协 ...

  7. 跨端开发技术 | 拼团商城项目同时开发app和小程序的要点

    此项目为拼团商城类型,主要功能包括商品分类.商品详情.商品搜索.拼团.订单管理等. 项目源码在 https://github.com/apicloudcom/group-ec 仓库的 widget 目 ...

  8. Python开发工具搭建-Pycharm

    PyCharm2017. 3.X专业版 安装使用. 注册码激活 本文以 Windows系统 为例: 1.开发工具获取及下载 Anaconda(Python 的集成工具 ) 下载地址: https:// ...

  9. IntelliJ IDEA 开发工具项目maven管理

    今天自己重新部署一下intellij下的项目开发环境,顺便把maven管理项目jar包的方法梳理一下 (1)首先下载apache-maven-3.0.4版本的maven,我自己解压在D:\maven\ ...

随机推荐

  1. 【读书笔记】iOS-如何选择本地化应用

    早在2007年发布iPhone的时候 ,苹果并没有一同发布本地化SDK,苹果公司声称不需要本地SDK,鼓励大家使用JavaScript,CSS和HTML开发Web应用.但接下来剧情并没有按照苹果设计的 ...

  2. numpy库的常用方法

    np.abs() 计算数组各元素的绝对值1 a= [0,1,2,3,4,-5,9,-3,12,-4] np.abs(a)out: array([ 0, 1, 2, 3, 4, 5, 9, 3, 12, ...

  3. 使用CSS兄弟选择器完成复杂垂直边距(vertical margins)的设计

    -------------------sibling选择器如何在完成复杂设计要求的同时,保持CSS可读 这是web前端开发过程中开始简单逐步变的复杂的例子之一:将一篇文章中的所有元素应用垂直边距(ve ...

  4. ionic cordova 安装指定版本

    安装ionic 及 cordova npm install -g cordova ionic npm 淘宝镜像(GFW,导致很多插件下载失败) npm install -g cnpm --regist ...

  5. 安卓开发_浅谈Action Bar

    一.Action Bar 导航栏.是3.0之后出现的. 所以注意使用的时候清单文件要设置下 android:minSdkVersion="11"(至少11) 但如果使用v4包,则不 ...

  6. off by null 实战

    前言 off by null 是一个比较有意思的技术 下面通过 hctf2018 的 heapstrom_zero 实战一波. 相关文件(exp, 题目)位于 https://gitee.com/ha ...

  7. flume组件汇总 source、sink、channel

    Flume Source Source类型 说明 Avro Source 支持Avro协议(实际上是Avro RPC),内置支持 Thrift Source 支持Thrift协议,内置支持 Exec  ...

  8. Django 信息

    Request information USER admin GET No GET data POST No POST data FILES No FILES data COOKIES Variabl ...

  9. Chrome 百度搜索热点过滤插件 - 开源软件

    学习时,为了搜集最全的中文资料,有时候不得不使用Baidu搜索引擎.在你还是个小菜鸡的时候你可能会花费大量时间在百度上! 但是,时间久了你会发现,你总会被网络上一些奇奇怪怪或者有趣的事情吸引过去而逐渐 ...

  10. February 4th, 2018 Week 6th Sunday

    Hope clouds observation. 心怀希望会蒙蔽双眼,影响判断. Almost every of us thinks we would be the master of our liv ...