Anaconda原理解析及使用

news2024/11/17 7:24:59

anaconda想必大家都不陌生,属于使用python的重要工具,更是学习机器学习、深度学习的必备工具。在搭建环境过程中,感觉出现的许多问题根源在于对于anaconda的基本原理理解不到位,导致许多无效操作。为此,我重温了一遍anaconda的相关背景知识,希望对各位也能有所收获。

python解释器

首先我们需要从python本身说起,从根源寻找问题,我们在使用python语言编写程序之前需要下载一个python解释器,这才是python的本体,没了python解释器,我们即使写了无比正确优雅的python脚本也没办法运行,那这个解释器在哪呢? 就在你安装python的地方。

 所有的第三方包都放在site-packages文件夹里面

 

 最关键的,一个python环境中需要有一个解释器,和一个包集合解释器:解释器根据python的版本大概分为2和3。python2和3之间无法互相兼容,也就是说用python2语法写出来的脚本不一定能在python3的解释器中运行包集合:包集合中包含了自带的包和第三方包,第三方包我们一般通过pip或者easy_install来下载,当一个python环境中不包含这个包,那么引用了这个包的程序不能在该python环境中运行
问题所在:python环境解释完了,那么接下来就要说明这样的环境究竟产生哪些问题,因为anaconda正式为了解决这些问题而诞生的

到底该装 Python2 呢还是 Python3

python2和python3在语法上是不兼容的,那我的机器上应该装python2还是python3呢,可能一开始选一个学习就好了,但是如果你要开发的程序必须使用python2而不能使用python3,那这时候你就不得不再下载一个python2,那这时候环境变量该设谁的目录呢,如果还是切换环境变量岂不是很麻烦虽然目前Python3使用的范围更广,但是Python3小版本之前也存在一些差异

包管理

如果我在本地只有一个python环境那我所有程序用到的各种包都只能放到同一个环境中,导致环境混乱。另外当我将写好的程序放到另一电脑上运行时又会遇到缺少相关包,需要自己手动一个个下载的情况实在是烦人。要是能每个程序开发都选用不同的环境,而开发好之后又能将该程序需要的环境(第三方包)都独立打包出来就好了

与virtualenv的对比

anaconda

是一个包含180+的科学包及其依赖项的发行版本。可以创建一个独立的Pvthon环境,其包含的科学包包括: conda,numpy,scipy,ipython notebook等

virtualenv

用于创建一个独立的Python环境的工具,新环境中需要手动安装需要的三方包

pip与conda比较

依赖项检查

pip

不一定会展示所需其他依赖包

安装包时或许会直接忽略依赖项而安装,仅在结果中提示错误

conda

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

环境管理

pip

维护多个环境难度较大

conda

比较方便地在不同环境之间进行切换,环境管理较为简单

对系统自带Python的影响

pip

在系统自带Pvthon中包的更新/回退版本/卸载将影响其他程序

conda

不会影响系统自带Python

适用语言

pip

仅适用于Python

conda

适用于Python,R,Ruby, Lua,Scala,Java,JavaScript,C/C++,FORTRAN

conda结合了pip和virtualenv的功能

Anaconda虚拟环境的管理

 打开anaconda prompt

创建新环境

conda create --name <env_name> <package_names>

 例如:  conda create --name env1 python==2.7

创建了一个名为env1的环境,python版本为2.7

默认情况下,新创建的环境将会保存在/Users/<user_name>/anaconda3/env目录下,其中,<user_name>为当前用户的用户名

env_name:即为新创建的环境名,建议使用英文进行命名,且不加空格,名称两边不加尖括号“<>”

package_names:即安装在环境中的包名,名称两边不添加尖括号<>

如果要在新创建的环境中创建多个包,则直接在<package_names>后以空格隔开,添加多个包名即可。如:a,即创建了一个名为“python3”的环境,环境中安装版本为3.7的python,同时也安装了numpy和pandas

--name 也可以替换成-n

说明:

  • 如果创建环境后安装Python时没有指定Python的版本,那么将会安装与Anaconda版本相同的Python版本,即如果安装Anaconda第2版,则会自动安装Python 2.x;如果安装Anaconda第3版,则会自动安装Python 3.x
  • 当成功切换环境之后,在该行行首将以"(env_name)"或"[env_name]"开头。其中, “"env_name"为切换到的环境名

退出环境至物理环境

deactivate

显示已创建环境 

conda info  --envs 

或者 conda info -e  或者  conda env list

结果中*所在行即为当前所在环境

复制环境

conda create --name <new__env_name> --clone <copied_env_name>

copied_env_name:即为被复制/克隆环境名,环境名两边不加尖括号"<>"
new_env_name∶即为复制之后新环境的名称,环境名两边不加尖括号"<>"

删除环境

 conda remove --name <env_name> --all 

包管理 

获取当前环境中已安装的包信息

conda list

查找可供安装的包版本

  • 精确查找

conda search --full-name <package_full_name >

--full-name:为精确查找的参数
<package_full_name>︰是被查找包的全名。包名两边不加尖括号"<>"

  • 模糊查找

conda search <text>

<text>:是查找含有“此字段"的包名。此字段两边不加尖括号"<>”

 安装包

 在当前环境中安装包

conda install <package_name>

指定版本号

conda install <package_name>=versiono

在指定环境中安装包

conda install --name <env_name> <package_name >

使用pip安装包

pip install <package_name>

说明:当使用conda install无法进行安装时,可以使用pip进行安装

注意:

  • pip只是包管理器,无法对环境进行管理。因此如果想在指定环境中使用pip进行安装包,则需要先切换到指定环境中,再使用pip命令安装包
  • pip无法更新python,因为pip并不将python视为包
  • pip可以安装一些conda无法安装的包;conda也可以安装一些pip无法安装的包。因此当使用一种命令无法安装包时,可以尝试用另—种命令

从Anaconda.org安装包

说明:当使用conda install 无法进行安装时,可以考虑从Anaconda.org中获取安装包的命令,并进行安装.浏览器中输入http:/ /anaconda.org (无需注册)

 

 

复制To install this package with conda run:"下方的命令,并粘贴在终端中执行 

 

 卸载包

卸载当前环境中的包

conda remove <package_name>

卸载指定环境中的包

conda remove --name <env_name> <package_name>

更新包

更新指定包

conda update <package_name>或conda upgrade <package_name>

说明︰更新多个指定包,则包名以空格隔开,向后排列。例如:conda updatepandas numpy matplotlib即更新pandas、numpy、matplotlib包
更新所有包

conda update --all或conda upgrade --all

说明:在安装Anaconda之后执行上述命令更新Anaconda中的所有包至最新版本,便于使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/810034.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TypeScript实战篇 - TS实战:花田APP的架构

目录 TS实现花田APP的聊天Node端 整体架构 项目拆分 项目的特点 模型层 所有系统都是模型的外设 模型层的优势 TS实现花田APP的聊天Node端 整体架构 项目拆分 代号&#xff1a;huatian 5个独立的npm包 huatian/ui 花田的主项目huatian/component 花田组件库huatian/…

❤️创意网页:高考加油倒计时网页文字加多版 - 增加祝福语句和下雪背景效果

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;简单好用又好看&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;欢迎踏入…

Emacs之改造最快的文件搜索工具fd-dired(基于fd命令)(一百二十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

RAID相关知识

简介 RAID &#xff08; Redundant Array of Independent Disks &#xff09;即独立磁盘冗余阵列&#xff0c;通常简称为磁盘阵列。RAID技术将多个单独的物理硬盘以不同的方式组合成一个逻辑磁盘&#xff0c;从而提高硬盘的读写性能和数据安全性。 数据组织形式 分块&#x…

Flowable-任务-手动任务

定义 手动任务是预期在没有任何业务流程执行引擎或任何应用程序的帮助下执行的任务&#xff0c;它用于建 模那些引擎不需要知道的人所做的工作&#xff0c;以及那些不存在已知系统或 UI 界面的人所做的工作&#xff0c;一 般完善流程结构描述&#xff0c;不被引擎执行。例如&a…

cookie登录b站获取cookie登录billbill教程

利用cookie免账号密码登录b站cookie登录哔哩哔哩cookie登录billbill教程 1.获取cookie 以Edge浏览器为例&#xff0c;随便找一个人私聊&#xff0c;按下F12&#xff0c;选到网络(network)&#xff0c;在筛选器里填send_msg&#xff0c;如下图所示。如果没有网络(network)&…

@TableId(type = IdType.ASSIGN_ID)

最近一直在使用mybatis plus ,上篇说没有添加ID 那不得学习一把 本来想不去添加主键&#xff0c;但是暂时还没发现mybatis plus增么 可以不设置主键的情况下修改&#xff0c;想想还是不行&#xff0c;主要我不想去多写代码&#xff08;肯定不是因为懒&#xff09;&#xff0c;…

巨人互动|Google海外户Google SEO常见术语

随着越来越多的人开始建立网站和在线业务&#xff0c;谷歌搜索引擎优化&#xff08;SEO&#xff09;变得越来越重要。要在谷歌上获得更高的排名&#xff0c;您需要掌握许多不同的术语和技术。在本篇文章中&#xff0c;我们将介绍一些常见的谷歌SEO术语&#xff0c;以帮助您了解…

perf 分析MySQL底层函数调用

文章目录 一、安装软件包二、数据采集2.1 perf top2.2 perf record 三、数据加工和解读 一、安装软件包 sudo yum install -y perf git clone https://github.com/brendangregg/FlameGraph二、数据采集 2.1 perf top perf top -g -p pidof mysqld 第一列&#xff1a;符号引…

指针的应用练习(数组与指针的关系)

如果对指针不是那么熟悉&#xff0c;我这里有几篇指针相关入门&#xff0c;不知道能不能帮助到你 http://t.csdn.cn/BbVwT http://t.csdn.cn/eqBng http://t.csdn.cn/hwNXp 看完后&#xff0c;检测一下这两段代码是否能透彻理解 &#xff08;1&#xff09; #include<s…

<MyBatis>前台同一个参数传多个条件查询方式(传数组或者拼接字符串)

方式一&#xff1a;前台传参为数组&#xff0c;后台SQ查询案例&#xff1a; 一般为多选场景&#xff1a;查询&#xff1b; 举例如下&#xff1a; 传值&#xff1a;“status” : [“保存”,“关闭”], 不传值&#xff1a;“status”: [], 传给后台&#xff1a; 控制层&#xff1…

虚拟机中Linux的IP地址配置详解

目录 第一章、虚拟机中Linux的IP地址配置详解1.1&#xff09;什么是IP地址1.2&#xff09;如何查看自己电脑ip地址1.3&#xff09;虚拟机NAT模式中Linux的IP地址设置有什么要求 第二章、使用Linux中的编辑命令进行网卡信息文件的配置 友情提醒 先看文章目录&#xff0c;大致了…

c++静态代码扫描工具clang-tidy详细介绍

clang-tidy 文章目录 clang-tidy1. 什么是clang-tidy2. clang-tidy可以解决什么问题3. 工作原理4. 如何使用clang-tidy4. 总结5. 举例说明&#xff1a; 1. 什么是clang-tidy Clang-Tidy是一个由LLVM项目提供的开源工具&#xff0c;是一个静态分析工具&#xff0c;用于进行静态…

Emacs之point-undo代码步骤记忆前进/回退(一百二十二)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

Android 面试题 虚拟机、进程、线程 七

&#x1f525; 安卓虚拟机 &#x1f525; 虽然Android程序是使用Java语言开发的&#xff0c;当然&#xff0c;现在也可以使用kotlin语言。但是实际上我们开发出来的Android程序并不能运行在JVM上&#xff0c;而是只能运行在一个类似JVM的Android虚拟机上。Android虚拟机有两种&…

【数据结构】队列(Queue)的实现 -- 详解

一、队列的概念及结构 1、概念 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出 FIFO(First In First Out)。 入队列&#xff1a;进行插入操作的一端称为队尾。 出队列&#xff1a;进行删除操作的…

作为程序员,你很有必要了解一下IVX

一、IVX是什么 iVX 是一个“零代码”的可视化编程平台&#xff0c;拥有方便的在线集成开发环境&#xff0c;不需要下载开发环境&#xff0c;打开浏览器即可随时随地进行项目编辑。iVX 还拥有“一站式”的云资源&#xff0c;通过这一套一站式服务&#xff0c;iVX 可以实现一站式…

某渣渣平台APP登录

准备 APP有壳----360的好像是&#xff0c;懒得回头再看了加密参数sign、password 过程就略过吧&#xff01;此处只展示结果

用html+javascript打造公文一键排版系统8:主送机关排版

公文一般在标题和正文之间还有主送机关&#xff0c;相关规定为&#xff1a; 主送机关 编排于标题下空一行位置&#xff0c;居左顶格&#xff0c;回行时仍顶格&#xff0c;最后一个机关名称后标全角冒号。如主送机关名称过多导致公文首页不能显示正文时&#xff0c;应当将主送机…

【雕爷学编程】MicroPython动手做(15)——掌控板之AB按键3

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…