当前位置: 首页 > news >正文

谈一下Python虚拟环境

一、何为虚拟环境

说虚拟环境前,我们先来谈一下Python环境,如果想编写Python代码,肯定需要Python环境,当前的Python环境也就是指Python编译器,对于windows来说,就是python.exe程序,我们需要安装官方的Python,【或者其它的编译器环境】这样才能够写Python的代码。随之而来的问题是:我的非常多的Python库怎样处理?

对于一般萌新来说,我的所有的Python库都放一起就OK了,比如Anaconda下的Spyder,它的库都在

D:\anaconda\Lib\site-packages这个文件夹内(这个只是我的电脑上的路径),我们可以查看,其实高达几百个。

当所有库都放在一起的时候,用着就非常爽了,需要哪个就调出来哪个,当然没问题,实际上这个Python环境是root环境,也是最为基本的环境,Spyder用的就是这个环境,对于我们学习来说,完全足够了,但是在实际情况中,我们需要考虑一个问题:如果我学习的时候是一个Python3的环境,但是公司里面有一个年久失修的项目,是用Python2编写的,恰好这个项目给你了,但是你的电脑只有Python3的环境,如果使用Python3的环境去维护这个Python2的项目,显然是不行的,因为Python2和Python3的语法是存在一定差异的,那么这个时候该怎么办?

解决方法一:卸载掉你的3版本的Anaconda然后重新安装一个对应于Python2版本的Anaconda。

问题:太麻烦了,卸载安装太浪费时间。

解决方法二:虚拟环境。

问题:什么是虚拟环境?

我们举一个例子来说:大家应该都知道抽屉,假设我们有两个抽屉,标记为1和2。

在抽屉1里面,我们安装了Python3编译器以及Python3所对应的各种库,得到一个Python环境【对于我的电脑来说就是root环境】;然后在抽屉2里面,我们去安装Python2编译器以及Python2所对应的各种库,得到一个新的Python环境。由于两个抽屉互不影响,这个时候我们得到了两个不同的环境,如果我在维护Python2的项目的时候,调出抽屉2的环境,在使用Python3的时候,调出抽屉1的环境,这样岂不美哉?

正是有了这个想法,就有了虚拟环境,或者说,上面说的不同的抽屉就是不同的虚拟环境,那么这样的抽屉可以有无数个,足以满足我们不同项目的需求。接下来的一个比较迫切的问题就是:怎么样去创建抽屉,或者说是怎么样去创建虚拟环境。

实际上,推广开来,不仅仅只有Python3和Python2这样的情况我们才需要虚拟环境,实际上我们任何一个不同的项目都需要一个虚拟环境,用来安装不同的Python版本和Python库,当一个环境内安装的库太多时,整个加载速度可能会变慢,因为它加载这个环境的时候会加载所有的库,所以,我们对于一个项目来说,需要什么库就安装什么库。

二、如何创建虚拟环境

方法1:Virtualenv

安装Virtualenv库,这个库能够方便我们创建虚拟环境。

安装方法:

pip install virtualenv

方法2:conda虚拟环境

conda虚拟环境是我们安装的编译器Anaconda自带的虚拟环境控制工具,使用conda能够非常方便地管理我们不同项目对应的不同虚拟环境。经过github上的调查,大部分人都在使用conda进行虚拟环境的管理。

三、虚拟环境详述

参看我的另一篇博文,介绍了如何使用conda来创建虚拟环境:

Anaconda的虚拟环境:https://blog.csdn.net/weixin_42830697/article/details/102463594


详细视频讲解如下,解锁更多知识:

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • php中几个字符处理函数的说明
  • Python爬虫实例--新浪热搜榜[xpath语法]
  • 诛仙二
  • Python爬虫实例--新浪热搜榜[正则表达式]
  • 豆瓣电影影评爬取---最受欢迎的影评[xpath语法]
  • hadoop安全模式无法关闭问题
  • 迷茫也得行动了
  • 3.爬虫基础——网络请求
  • 使用Rman的Plus archvielog选项简化数据库备份操作
  • 4.爬虫基础——你真的了解url(网址)吗?
  • 1.爬虫数据提取——方法总结
  • 如何从结果集中获得随机结果
  • 2.爬虫数据提取——Xpath环境配置
  • Oracle9i新特性:iSQLPLUS
  • 3.爬虫数据提取——Xpath语法
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • javascript 总结(常用工具类的封装)
  • Kibana配置logstash,报表一体化
  • Sequelize 中文文档 v4 - Getting started - 入门
  • session共享问题解决方案
  • Spring核心 Bean的高级装配
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • tweak 支持第三方库
  • Unix命令
  • 从重复到重用
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 前端存储 - localStorage
  • 前嗅ForeSpider中数据浏览界面介绍
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 深度学习入门:10门免费线上课程推荐
  • 什么是Javascript函数节流?
  • 最近的计划
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​油烟净化器电源安全,保障健康餐饮生活
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (2)(2.10) LTM telemetry
  • (20)docke容器
  • (day18) leetcode 204.计数质数
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (八)Spring源码解析:Spring MVC
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (四)linux文件内容查看
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转)人的集合论——移山之道
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .net 7和core版 SignalR
  • .net core 6 redis操作类
  • .NET Core 项目指定SDK版本
  • .NET IoC 容器(三)Autofac
  • .NET 表达式计算:Expression Evaluator
  • .NET 某和OA办公系统全局绕过漏洞分析
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)