虚拟环境(conda vs venv)

conda创建虚拟环境

base环境

打开anaconda prompt或Linux/MacOS终端时,缺省环境为base。

  • 创建:

conda create --name python38-env python=3.8

如果不指定后面的python=3.8 则只是一个系统的基本模块。 然后,可以根据需要安装所需的模块。

一个是conda相比virtualenv/venv最重要的一点,因为在用virtualenv/venv时环境中Python的版本受系统Python版本的限制,而在使用conda时,环境里Python的版本则不受系统Python版本的限制。

  • 列举:

conda info -e # or conda env list

  • 激活:

conda activate scrapy-env

  • 这里我们要安装的是网络爬虫模块Scrapy,安装Scrapy是使用conda的一个很好的例子。因为Scrapy有很复杂的库依赖,在Windows上用pip安装时经常会出现问题,所以在Windows上推荐使用conda来安装Scrapy。

conda install -n <env_name> --channel conda-forge scrapy (默认最新版)

conda install -n <env_name> --channel conda-forge scrapy=2.4 (指定版本)

–channel指定的是该模块所来自的频道,常见的频道有anaconda和conda-forge,如果不指定频道,则默认从anaconda频道安装。

​ 如果我们需要更新某个模块,则可以使用, 同样,在更新模块时,也需要指定频道,因为不同频道里面相同模块的最新版本可能会不一样。

conda update --channel conda-forge scrapy

  • 复制环境

​ 我们可以将环境中的模块设置导出到文件

conda list --explicit > conda-requirements.txt

​ 使用–explict在输出中会列举模块的URL,这样便于查看和后续的安装。

​ 我们可以从配置文件中克隆一个完全一样的环境,这个和用pip从requirements.txt文件克隆环境是一样的。

conda create --name scrapy-env-clone --file conda-requirements.txt

  • 删除环境

conda env remove --name scrapy-clone

这些所有的虚拟环境,都在...\Anaconda3\envs文件夹下。

virtualenv创建虚拟环境

1.安装virtualenv

pip install virtualenv

2.创建虚拟环境

$ mkdir myproject

$ cd myproject

$ virtualenv venv

创建了一个名为myproject的文件夹,然后这里边创建虚拟环境venv。注意venv永远是在项目目录下的,而conda则不限制。

在创建virtualenv时增加–no-site-packages 选项的virtualenv就不会读取系统包,注意如果提示virtualenv: error: unrecognized arguments: --no-site-package是因为从版本20开始,默认就是’–no-site-packages‘了。如下:

virtualenv nowamagic_venv --no-site-packages

–distribute选项使virtualenv使用新的基于发行版的包管理系统而不是 setuptools 获得的包。 你现在需要知道的就是 --distribute 选项会自动在新的虚拟环境中安装 pip ,这样就不需要手动安装了。 当你成为一个更有经验的Python开发者,你就会明白其中细节。

virtualenv --distribute nowamagic_venv

可使用-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

3.激活虚拟环境

Linux:$ venv/bin/activate或者source $ENV_BASE_DIR/$ENVIRONMENT_NAME/bin/activate

如果此时进入到venv虚拟环境文件夹下,可以source bin/activate

Windows:$ venv\Scripts\activate

==> 有个小前缀哦(venv) C:\Users\meij1\Videos\OdoCSV\myproject>

4.退出环境
deactivate

Anaconda、conda、pip、virtualenv的区别

① Anaconda

Anaconda是一个包含180+的科学包及其依赖项的发行版本。其包含的科学包包括:conda, numpy, scipy, ipython notebook等。

② conda

conda是包及其依赖项和环境的管理工具。
适用语言:Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。
适用平台:Windows, macOS, Linux

用途:

快速安装、运行和升级包及其依赖项。
在计算机中便捷地创建、保存、加载和切换环境。

如果你需要的包要求不同版本的Python,你无需切换到不同的环境,因为conda同样是一个环境管理器。仅需要几条命令,你可以创建一个完全独立的环境来运行不同的Python版本,同时继续在你常规的环境中使用你常用的Python版本。

conda为Python项目而创造,但可适用于上述的多种语言。
conda包和环境管理器包含于Anaconda的所有版本当中。

③ pip

pip是用于安装和管理软件包的包管理器。
pip编写语言:Python。

Python中默认安装的版本:

Python 2.7.9及后续版本:默认安装,命令为pip

Python 3.4及后续版本:默认安装,命令为pip3

pip名称的由来:pip采用的是递归缩写进行命名的。其名字被普遍认为来源于2处:

“Pip installs Packages”(“pip安装包”)
“Pip installs Python”(“pip安装Python”)

④ virtualenv

virtualenv:用于创建一个独立的Python环境的工具。

解决问题:

当一个程序需要使用Python 2.7版本,而另一个程序需要使用Python 3.6版本,如何同时使用这两个程序?
如果将所有程序都安装在系统下的默认路径,如:/usr/lib/python2.7/site-packages,当不小心升级了本不该升级的程序时,将会对其他的程序造成影响。
如果想要安装程序并在程序运行时对其库或库的版本进行修改,都会导致程序的中断。
在共享主机时,无法在全局site-packages目录中安装包。

virtualenv将会为它自己的安装目录创建一个环境,这并不与其他virtualenv环境共享库;同时也可以选择性地不连接已安装的全局库。

⑤ pip 与 conda 比较
→ 依赖项检查

pip:

不一定会展示所需其他依赖包。
安装包时或许会直接忽略依赖项而安装,仅在结果中提示错误。

conda:

列出所需其他依赖包。
安装包时自动安装其依赖项。
可以便捷地在包的不同版本中自由切换。

→ 环境管理

pip:维护多个环境难度较大。
conda:比较方便地在不同环境之间进行切换,环境管理较为简单。

→ 对系统自带Python的影响

pip:在系统自带Python中包的**更新/回退版本/卸载将影响其他程序。
conda:不会影响系统自带Python。

→ 适用语言

pip:仅适用于Python。
conda:适用于Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。

⑥ conda与pip、virtualenv的关系

conda结合了pip和virtualenv的功能。 https://blog.csdn.net/zhouchen1998/article/details/84671528

个人总结:conda创建的虚拟环境是OS级别的可以解决包的依赖问题,而venv创建的是项目级别的,所有的依赖问题自己解决,占用空间是项目的空间,适合开发人员较小的环境,python版本依赖主程序。

1.什么是virtualenv(venv)

这是一个虚拟环境管理器。它可以让你每个项目甚至每个脚本配置一个自定义的python解释器环境,这最大的好处是我可以不污染开发环境。venv可以创建任意多个虚拟环境,你只要指定当前环境那么pip安装的包就只会在这个环境下,这个环境和你的操作系统部署的python环境是隔离的。这有两个好处。
首先,我可以分门别类常见虚拟环境,互不污染。(如机器学习和爬虫不干涉)
其次,一旦我不使用了,可以直接删除虚拟环境,而不用管各种文件残留,关联问题了。

2.什么是pip

pip 是 Python 最常用的包管理器,该工具提供了对Python 包的查找、下载、安装、卸载的功能。它能自动处理依赖 。(linux开发者曾今对此深恶痛绝知道yum的出现)
一般pip是解释器自带的,当然也可以安装。pip的出现使得类似java那样第三方包较难管理的局面消失(当然java也可以方便处理了)。
使用方法:pip install packagename
当然,后面提到的conda也具有包管理器功能,使用是:conda install packagename

3.什么是conda

最近有人问我venv和conda有什么区别,其实在我看来区别不是特别大。主要如下。
如果说venv是虚拟环境管理器,pip是包管理器,那么conda则是两者的结合。
遗憾的是conda的包管理器做的一般,大多数时候还是使用pip安装包。
但是,注意,pip只能安装Python的包,conda可以安装一些工具软件,即使这些软件不是基于Python开发的。
但是conda的虚拟环境管理还是可以的,一般使用venv会在该项目下创建虚拟环境,再不济也会在项目下创建venv的文件夹(含配置文件),当然pycharm下创建虚拟环境另说;然而conda每个虚拟环境不会占用项目文件夹的空间,它创建在用户设定的一个位置,这使得多个项目共享一个虚拟环境更加方便(只是方便,venv也是可以的,但是venv一般占用项目文件夹空间,而且venv命令行使用具有局限性)。
conda虚拟环境是独立于操作系统解释器环境的,即无论操作系统解释器什么版本(哪怕2.7),我也可以指定虚拟环境python版本为3.6(见文章开头所说原博客),而venv是依赖主环境的。
对于科学计算和大数据领域的人,conda是环境自动集成了numpy这样的主流科学计算包的,venv每个包都要自行下载。
conda有图形化环境管理器,venv没有。(虽然开发人员几乎不用图形界面conda)

python3基础知识复习 -- 虚拟环境(conda VS venv)相关推荐

  1. python3基础知识复习 --TKinter GUI的终极选择(2)

    文章目录 事件绑定 Message Tkinter布局管理 Tkinter使用多线程 Tkinter多线程暂停和继续 Tkinter文件之间的调用 事件绑定 一个 Tkinter 应用程序大部分时间花 ...

  2. 01月26日【Python3 基础知识】

    01月26日[Python3 基础知识] 5.1 九宫格 5.2 函数入门 5.3 判断某天为某年的第几天 5.1 九宫格 import random x = 0 l = [1,2,3,4,5,6,7 ...

  3. linux基础知识复习

    @(tigerfive)[linux,基础知识,复习笔记] linux基础复习(一) 今天只整理框架,具体内容之后详细整理吧 文件管理 文件基本操作 创建文件和目录 拷贝文件和目录 剪切文件和目录 删 ...

  4. 2021 版 Spring Boot 基础知识复习手册(2w字,建议收藏)

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:分享一套基于SpringBoot和Vue的企业级中后台开源项目,这个项目有点哇塞!个人原创100W +访问量博客: ...

  5. JDBC基础知识复习

    JDBC基础知识复习 1.JDBC连接数据库 1.1.导入JDBC驱动 1.2.注册JDBC驱动程序 1.3.创建连接对象 1.4.关闭JDBC连接 1.5.每种数据库对应的驱动名和URL 2.JDB ...

  6. Java基础知识复习(一)

    Java基础知识复习(一) 目录 Java简介 命名规则 八种基本的数据类型 字面量 类型转换 变量的形态 逻辑运算符 位运算 移位运算 习题知识点 目录 Java简介 Java是由Sun公司在199 ...

  7. 2011计算机等级考试二级c语言公共基础教程.doc,2011年全国计算机等级考试二级c语言公共基础知识复习100题及答案.doc...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp资格/认证考试&nbsp>&nbsp计算机等级考试 2011年全国计算机等级考试二级c语言公 ...

  8. 计算机二级的公共基础课水平测试,计算机二级公共基础知识复习试题含答案

    计算机公共基础课程,是针对高校非计算机专业学生设立的一门必修计算机基础课程.以下是由学习啦小编整理关于计算机二级公共基础知识复习试题含答案的内容,希望大家喜欢! 计算机二级公共基础知识复习试题含答案( ...

  9. java基础知识复习(上半)

    java基础知识复习 java为什么被发明? Green项目的确立,应用于像电视盒一样的消费类电子产品,语言本身本身中立. java的三大版本? javaSE的定位在于客户端,只要用于桌面应用软件的编 ...

最新文章

  1. 三种钱非常奥妙 花越多就赚越多
  2. 声明式事务、Spring 中常用注解、Ajax
  3. 生活杂记 - 丢东西
  4. spark笔记之Scala中的协变、逆变、非变
  5. 第十二届蓝桥杯大赛软件赛决赛题解
  6. 【ManageEngine】IP地址扫描的作用
  7. 安卓苹果双端五级分销影视APP源码美化版
  8. 极光推送 简书android,极光推送 (具体步骤,指导操作,推送成功)
  9. iOS迅雷V6.01更新,变化重大丨附下载地址
  10. 常见python基础面试题_常的解释|常的意思|汉典“常”字的基本解释
  11. redis-远程主机强迫关闭了一个现有的连接
  12. html文本框中加入跑马灯,CSS html文字的跑马灯(流光)特效
  13. react 组件 进阶之 ref (ts 版本)
  14. 帝国CMS灵动标签如何调用父子栏目连接和名称导航
  15. 插入法排序(c语言)
  16. 超市销售数据分析python、求某一个人的营业额总和_Python+pandas使用交叉表分析超市营业额数据!这超市怕是!...
  17. 解决Android在更新安装包时出现“未安装应用”的情况
  18. 巡检机器人之仪表识别系统
  19. ILSpy反编译工具
  20. c语言知识点总结(摘自head first c)

热门文章

  1. 深入浅出解析CSS优先级规则
  2. pycharm报ModuleNotFoundError: No module named pywifi
  3. 能看懂的3D Tic-Tac-Toe问题_gruobi求解
  4. 建设银行app流水申请
  5. 计算机课题的理论依据怎么写,计算机理论论文大纲 计算机理论论文提纲怎么写...
  6. uni-app和微信原生小程序的工具请求文件
  7. 通达信证券软件接口编程能赚钱吗?
  8. 查询student表中所有李姓的学生的 SQL语句怎么写
  9. ICP , ISP and IAP
  10. PHP+MySql的网络验证源码开源纯代码可二次开发