【一文讲清楚 Anaconda 相关环境配置】

文章目录

  • 0 前言
  • 1 Package 与环境
    • 1.1 module
    • 1.2 package
    • 1.3 环境
  • 2 Conda、Miniconda、Anaconda和Pip & PyPI
    • 2.1 Conda
    • 2. 2 Miniconda
    • 2.3 Anaconda
      • 2.3.1 Anaconda Navigator
      • 2.3.2 Anaconda PowerShell Prompt & Anaconda Prompt
      • 2.3.3 Jupyter notebook
    • 2.4 Pip & PyPI
      • 2.4.1 pip
      • 2.4.2 PyPI
  • 3 管理环境以及package
    • 3.1 环境管理
      • 3.1.1 查看已安装的环境:
      • 3.1.2 创建新环境:
        • 命令行创建新环境
        • ANACONONDA.NAVIGATOR创建
        • 新环境的位置
      • 3.1.3 进入(激活)环境:
      • 3.1.4 退出环境:
      • 3.1.5 删除环境:
    • 3.2 Package 管理
      • 3.2.1 查看已安装的包:
      • 3.2.2 安装包:
  • 4 Jupyter Notebook
    • 4.1 环境
    • 4.2 内核
    • 4.3 利用环境建立内核
  • 5 参考资料
  • 写在最后

0 前言

我们先来看几个问题:

  • Conda、MiniConda、Anaconda、Pip分别是什么含义,都有什么作用?

  • 如何安装不同的 package,如何配置不同的虚拟环境 env?

  • 为什么我明明已经通过 pip 安装了某个 package,编译器还是提示 No module named 'xxx',我的 package 安装到哪了?

  • 如何定制内核?

熟悉的小伙伴应该猜到了,我们今天要讲的是 Python 项目的配置问题。首先,我们先来理解一下 Package 与环境的概念。

1 Package 与环境

1.1 module

为了编写可维护可重用的代码,通常把代码按功能分类, 分别放在不同的文件里,这样每个文件中的代码就相对较少,且功能统一。 在Python中,一个 .py 脚本源码文件就称之为一个模块 (module)。

使用模块还可以避免函数名和变量名冲突。每一个模块都有自己的全局符号表,包含所有可以被其他模块使用的变量,函数等, 同名函数和变量可以同时存在不同的模块中,因此在编写模块时, 不必考虑名字会与其他模块冲突,这在多人协同编程时至关重要。

1.2 package

在实际的编码环境中,已经存在成千上万的模块,并且新模块还在不停被创建,此外多人协同编码时,不同的人编写的模块名也可能相同。基于这样的事实, 为了避免模块名冲突,Python 又引入了按目录来组织模块的方法,称为包(Package)。

简单说包就是一个文件夹,这个文件夹包含一个 init.py 文件,它可以是一个空文件。

引入了包以后,只要顶层的包名不冲突,那么所有的模块都不会冲突。一些知名的包有 numpy、pandas等等

你也可以将开发中常用的函数封装成库,上传到 PyPI 为 Python 社区贡献自己的力量。

1.3 环境

环境指的是 package 与 python 解释器的集合。不同的项目可能会使用到不同版本的 python 解释器、package。

2 Conda、Miniconda、Anaconda和Pip & PyPI

2.1 Conda

Conda 是一个开源的 package 管理系统和环境管理系统。通过 conda 你可以安装、更新、移除任何你需要的package,还可以创建、保存、加载以及切换运行环境。Conda 的命令可以参考 Cheat sheet。

Conda 可以运行在 Windows、MacOS 以及 Linux 系统上。虽然 Conda 一开始是为 Python 语言创造的,但是它也可以为其他程序语言(R, Ruby, Lua, Scala, Java, JavaScript, C/ C++, FORTRAN)解决 package management 以及 environment management 问题。

2. 2 Miniconda

Miniconda 是 conda 的一个免费最小安装程序。它是 Anaconda 的一个小型引导版本,仅包括 conda、Python、它们共同依赖的包以及一小部分其他有用的包(如 pip、zlib 等)。说白了,除了 condaAnaconda (Conda) for Python - What & Why?、Python 和其他一些共同依赖的包以外,不会向 Anaconda 一样预装一些数据科学以及数据分析的 package,相对更加轻量化。

安装 Miniconda 可以参考 Miniconda 官方指导文档,也可以参考视频 Anaconda (Conda) for Python - What & Why?。

2.3 Anaconda

Anaconda 是一家公司也是该公司开发的一款软件,该公司创立于2012年,当时旨在将Python应用于数据分析中。Anaconda 公司发行的 Anaconda 软件预装了一些数据分析领域的 package,是一个强大的 Python 数据科学发行版(这些包存放在base环境中)。Anaconda 中包含了 Conda。Anaconda 中的环境管理都是由 Conda 实现的,package 的管理则是由 Conda 或者 Pip 来实现。

在安装了 Anaconda 之后,在 Anaconda3 统计目录下会出现以下 .exe:

  • Anaconda Navigator

  • Anaconda Powershell Prompt

  • Anaconda Prompt

  • Jupyter notebook

2.3.1 Anaconda Navigator

Anaconda Navigator 是一个 Anaconda 的GUI 即用户图形交互界面,如下图所示:

你可以通过该 GUI 新建虚拟环境,并在相应的环境中导入 package、安装一些编译器等等。

2.3.2 Anaconda PowerShell Prompt & Anaconda Prompt

Anaconda PowerShell PromptAnaconda Prompt 是 Anaconda 提供的两个命令行工具,主要区别在于使用的命令行解释器。

Anaconda PowerShell Prompt:

  • 使用 PowerShell 作为命令行解释器。
  • PowerShell 是一种跨平台的脚本语言和命令行工具,具有强大的脚本编写和自动化功能。
  • 在 Windows 系统上,Anaconda PowerShell Prompt 默认以管理员身份运行。

Anaconda Prompt:

  • 使用传统的命令提示符(Command Prompt)或者终端作为命令行解释器。
  • 对于 Windows 系统,可以使用 Command Prompt,对于类 Unix 系统(如 Linux、macOS),可以使用终端。
  • 不同于 PowerShell,Anaconda Prompt 使用的是标准的命令行语法。

选择使用哪个取决于用户的偏好和操作系统。一些命令在 PowerShell 中可能略有不同,因此根据具体的需求选择合适的命令行提示符。我通常使用的是 Anaconda Prompt。

2.3.3 Jupyter notebook

Jupyter Notebook 是一个开源的交互式笔记本应用程序,支持多种编程语言。它允许用户创建和共享文档,其中包含实时代码、方程、可视化和叙述文本。

2.4 Pip & PyPI

pipPyPI 是与 Python 包管理和分发有关的两个关键组件。

2.4.1 pip

pip 是 Python 的包管理工具,用于安装、升级和卸载 Python 包。它使得在 Python 环境中轻松管理第三方库和工具的安装,让开发者能够方便地获取、安装和管理各种 Python 软件包。

2.4.2 PyPI

PyPI 是 Python 包索引(Python Package Index)的缩写,是一个中央的存储库,用于存储和分发 Python 软件包。PyPI 提供了一个方便的途径,让开发者能够分享和发布他们编写的 Python 代码和软件包。pip 会从 PyPI 上下载并安装软件包。

在 PyPI 网站,开发者可以注册并上传他们的 Python 软件包,同时用户可以通过 pip 从 PyPI 下载这些软件包并在本地安装。这种集中化的存储和分发模型极大地方便了 Python 社区的开发和使用。

3 管理环境以及package

现在基本都是使用 Anaconda 软件来管理环境以及package(就是平常所说的包或者库,比如 numpy 包(库)),而在 Anaconda 中实际上是通过 Conda 来管理环境以及 package 的。现在就来看一下 Anaconda 中的 Conda 是如何通过命令行来管理环境以及 package 的。实际上 pip 也能实现对 package 的管理,命令与 Conda 类似,只需要将 conda 改成了 pip。以下用的是 conda 实现的 package 管理,pip 方法读者可以自行实现。

首先,打开 Anaconda Prompt,接下来的环境管理以及 package 管理都是在该命令行中进行操作的。

3.1 环境管理

3.1.1 查看已安装的环境:

conda env list

这将列出所有已创建的环境,当前激活的环境前面会有一个星号。

3.1.2 创建新环境:

我们在安装好 Aanconda 之后,会有一个预设的 base 环境,该环境中已经安装好了基本在数据科学领域需要的一切 package。在配置相关项目的环境时我们可以直接使用 base 环境,但是一般也推荐自己新建一个环境。关于为什么要自己新建环境,网上也没有过多的解释,我的理解是需要啥 package 增加就可以,自带的 base 环境臃肿,在部署项目的时候可能会占用不必要的空间。

使用 conda 创建的新环境默认存放在安装的 Anaconda 路径下的 envs 中,比如我的 Anaconda 安装在 "D:\software\anaconda3" 中,我新建的环境 myenv 的默认存放路径为"D:\software\anaconda3\envs"

创建新环境有两种方法:

  • 命令行创建
  • ANACONONDA.NAVIGATOR创建
命令行创建新环境
conda create --name myenv

这将创建一个名为 “myenv” 的新环境。你可以通过添加 python 参数指定 Python 版本:

conda create --name myenv python=3.8

你还可以在创建环境时直接安装包:

conda create --name myenv numpy pandas
ANACONONDA.NAVIGATOR创建

首先打开ANACONONDA.NAVIGATOR

  • 点击左侧的 Environments,会看到已经存在的一些环境;
  • 点击环境下方的 create
  • 在弹出的对话框中输入新环境的名字、选择默认安装的包(Python或者R,均可以选择安装版本),输入完成后点击 Creat 完成新环境的创建。

通过以上两种不同的创建新环境的过程,我们知道可以通过命令行来创建一个完全空的环境,而通过 ANACONONDA.NAVIGATOR 创建新环境必须至少安装一个 Python 或者 R 语言包。

新环境的位置

如果不想在默认路径下新建新环境,如何修改呢?通过以下代码在指定路径中创建新环境:

conda create --prefix="E:\envs\myenv"

其中,"E:\envs\myenv" 是你电脑已经存在的并且你想存放新环境的路径,"myenv" 是你的环境的名称。

3.1.3 进入(激活)环境:

要进入 conda 创建的某个环境,可以使用以下命令:

conda activate 你的环境名

如果你使用的是 conda 的旧版本,可能需要使用 source 命令:

source activate 你的环境名

这将激活指定的环境,使你的命令行提示符前面显示当前环境的名称。在这个环境中,你可以安装、升级和删除包,而这些操作都将影响选定的环境而不是系统 Python。

注意: 如果你使用的是 Windows 操作系统,可能需要使用 activate 命令,而不是 source activate。在新版本的 conda 中,activatesource activate 是等效的。

3.1.4 退出环境:

conda deactivate

这将退出当前激活的环境。

3.1.5 删除环境:

要删除一个 Conda 环境,可以使用以下命令:

conda env remove --name your_environment_name

这里,your_environment_name 是你要删除的环境的名称。请确保在删除环境之前你已经退出该环境,因为删除正在使用的环境可能导致问题。

例如,如果你有一个名为 myenv 的环境,你可以使用以下命令删除它:

conda env remove --name myenv

执行这个命令后,Conda 会提示你确认删除。输入 y 确认删除即可。

请注意,删除环境将会删除该环境中安装的所有包和文件,因此请确保你真的想要删除该环境。如果你真的需要删除这个环境,在通过命令行删除相应的环境之后,记得将环境文件夹以及对应的内核文件夹删除,以释放相应的空间。

3.2 Package 管理

3.2.1 查看已安装的包:

conda list

通过以上命令将列出当前激活环境中安装的所有包。在查看已安装的包之前,你要明确你是想查看哪一个环境下的 package,也就是说你要首先选择环境,进入(激活)相应的环境。如何进入(激活)环境,将在后面进行介绍。

3.2.2 安装包:

conda install package_name

这将安装指定的包,例如:

conda install numpy

你还可以通过指定版本号安装特定版本的包:

conda install numpy=1.18.5

如果在安装某个 package 时遇到以下的情况:

那就说明默认的 channel 无法获取到这个 package 的安装路径,你就需要通过 anaconda.org/ 网站的搜索框来查询安装这个 package 的方法。如果在安装过程中出现错误,可以使用 pip 进行安装。

4 Jupyter Notebook

关于 Jupyter Notebook 的安装与使用,网络上相关的博文有很多,大家可以参考学习。这里我想讲的是我对于环境与内核这两个概念的理解。

4.1 环境

环境通常指的是 Python 虚拟环境,它是一个隔离的 Python 运行环境,用于管理项目的依赖关系。使用 conda 可以创建不同的 Python 环境,每个环境都有自己的包和版本,避免了项目之间的依赖冲突。在 Jupyter Notebook 中,你可以选择不同的环境来运行 notebook。

在使用虚拟环境时,确保在你的虚拟环境中安装了 Jupyter 并且在该环境中启动 Jupyter Notebook,这样你就可以在 notebook 中使用与虚拟环境关联的 Python 版本和包。

4.2 内核

内核是 Jupyter Notebook 与编程语言的交互接口,它负责执行代码、管理变量和输出结果。对于 Python,Jupyter Notebook 使用 IPython 作为默认的内核。IPython 是一个增强版的 Python 解释器,提供了更强大的交互式计算功能。你可以在 Jupyter Notebook 中选择不同的内核,这意味着你可以在同一个 notebook 中使用不同的编程语言。

在 Jupyter Notebook 的右上角,你会看到一个下拉菜单,其中包括当前 notebook 使用的内核。通过这个菜单,你可以切换到其他已安装的内核。

4.3 利用环境建立内核

一个环境其实就是一个内核,我们可以把某个环境 “封装” 成不同名字的内核。

通过 jupyter kernelspec list 命令可以查询目前存在的内核,我们可以在某一个环境下的 jupytet notebook 中切换使用不同的内核。

打开 Anaconda Prompt,通过 conda env list 查看现在有哪些环境;通过 activate xxx 进入/激活某个环境;如果你想用 jupyter notebook 在这个环境中进行交互式写代码,你需要安装 jupyter notebook,两种方式:一是通过 anaconda GUI 安装,另一种是命令行安装;接着要为 jupyter nootbook 定制内核,默认需要安装 ipykernel 内核,在命令行中通过 conda install ipykernel 命令安装内核 ipykernel。

根据自定义的新环境定制你需要的内核,通过以下命令完成内核定制:

python -m ipykernel install --user --name your_environment_name --display-name "Your Display Name"

替换 your_environment_name 为你的环境名称,Your Display Name 为你想要在 Jupyter Notebook 中显示的内核名称。

注意:将某个环境定制为内核的时候,一定要进入到该环境中,再执行上述定制内核命令。比如,我想将环境 ai38 定制为 “torch2.1” 内核(“torch2.1” 是内核显示的名字),我需要先通过命令 conda activate ai38 进入到环境 ai38 中,然后通过命令 python -m ipykernel install --user --name ai38 --display-name "torch2.1" 完成内核的定制。

5 参考资料

以下参考资料不分先后。

  • Jupyter Notebook增加kernel详细步骤
  • Anaconda (Conda) for Python - What & Why?
  • import torch 或其他包,但是Jupyter notebook 不显示的原因解决 | 解决Jupyter Notebook:no module named但实际已经pip install问题

写在最后

如果文章内容有任何错误或者您对文章有任何疑问,欢迎私信博主或者在评论区指出 💬💬💬。

如果大家有更优的时间、空间复杂度方法,欢迎评论区交流。

最后,感谢您的阅读,如果感到有所收获的话可以给博主点一个 👍 哦。

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

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

相关文章

深度学习第二天:RNN循环神经网络

☁️主页 Nowl 🔥专栏《机器学习实战》 《机器学习》 📑君子坐而论道,少年起而行之 文章目录 介绍 记忆功能对比展现 任务描述 导入库 处理数据 前馈神经网络 循环神经网络 编译与训练模型 模型预测 可能的问题 梯度消失 梯…

2023/11/24JAVAweb学习

age只会执行成立的,show其实都展示了,通过display不展示 使用Vue,必须引入Vue.js文件 假如运行报错,以管理员身份打开vscode,再运行 ------------------------------------------------------------------- 更改端口号

HarmonyOS简述及开发环境搭建

一、HarmonyOS简介 1、介绍 HarmonyOS是一款面向万物互联时代的、全新的分布式操作系统。有三大系统特性,分别是:硬件互助,资源共享;一次开发,多端部署;统一OS,弹性部署。 HarmonyOS通过硬件互…

微服务实战系列之Nginx(技巧篇)

前言 今天北京早晨竟然飘了一些“雪花”,定睛一看,似雪非雪,像泡沫球一样,原来那叫“霰”。 自然中,雨雪霜露雾,因为出场太频繁,认识门槛较低,自然不费吹灰之力,即可享受…

基于 STM32 的温度测量与控制系统设计

本文介绍了如何基于 STM32 微控制器设计一款温度测量与控制系统。首先,我们将简要介绍 STM32 微控制器的特点和能力。接下来,我们将详细讨论温度传感器的选择与接口。然后,我们将介绍如何使用 STM32 提供的开发工具和相关库来进行温度测量和控…

电脑技巧:电脑常见蓝屏、上不了网等故障及解决办法

目录 一、电脑蓝屏 常见原因1: 病毒木马 常见原因2: 安装了不兼容的软件 二、电脑不能上网 常见原因1: 新装系统无驱动 常见原因2: DNS服务器异常 常见原因3: 硬件问题 三、电脑没声音 常见原因1: 未安装驱动 常见原因2: 硬件故障 四、电脑屏幕不显示 常见原因1: 显…

html实现我的故乡,城市介绍网站(附源码)

文章目录 1. 我生活的城市北京(网站)1.1 首页1.2 关于北京1.3 北京文化1.4 加入北京1.5 北京景点1.6 北京美食1.7 联系我们 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43…

2.19 keil里面工具EventCorder使用方法

设置方法如下: 添加初始化代码如下: eventRecord.c #include "eventRecord.h" #include "usart.h" extern UART_HandleTypeDef *pcControlUart;/* RecordEvent初始化 */ void InitEventRecorder(void) {#ifdef RTE_Compiler_Even…

[架构之路-251]:目标系统 - 设计方法 - 软件工程 - 软件建模 - 什么是建模,什么是软件系统建模?软件系统阶段性建模?正向建模与反向建模?

目录 前言: 一、什么是建模 1.1 什么是建模 1.2 常见的建模的方式与种类 二、什么是软件系统建模 2.1 软件系统建模的概念 2.2 软件系统常见的三种建模方法和手段 2.3 软件系统建模的常见工具 三、软件系统阶段性建模 3.1 软件工程在不同阶段对软件系统进…

合共软件创新亮相:第102届上海电子展成就技术新篇章

2023年,第102届中国(上海)电子展活动在全球瞩目中圆满落幕。作为下半年华东地区最具影响力的电子展会,此次盛会吸引了来自全球的600家领先企业,共同探讨电子元器件行业的最新发展成果和趋势。 本届展会围绕核心先导元器…

网络运维与网络安全 学习笔记2023.11.25

网络运维与网络安全 学习笔记 第二十六天 今日目标 ACL原理与类型、基本ACL配置、高级ACL配置 高级ACL之ICMP、高级ACL之telnet ACL原理与类型 项目背景 为了企业的业务安全,要求不同部门对服务器有不同的权限 PC1不能访问Server PC2允许访问Server 允许其他所…

MyBatis框架_01

Web后端开发_03 MyBatis框架 什么是MyBatis? MyBatis是一款优秀的持久层框架,用于简化JDBC的开发。MyBatis本是 Apache的一个开源项目iBatis,2010年这个项目由apache迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。官网…

Transformer——decoder

上一篇文章,我们介绍了encoder,这篇文章我们将要介绍decoder Transformer-encoder decoder结构: 如果看过上一篇文章的同学,肯定对decoder的结构不陌生,从上面框中可以明显的看出: 每个Decoder Block有两个…

nrm安装及使用

一、介绍 nrm 是一个 Node.js 的 registry 管理工具,它允许你快速地在不同的 npm registry 之间进行切换。通过使用 nrm,你可以方便地将 npm 的 registry 切换为淘宝镜像、npm 官方镜像或者其他定制的镜像,以加快包的下载速度。nrm仓库请点击…

Python武器库开发-前端篇之CSS基本语法(三十)

前端篇之CSS基本语法(三十) CSS简介 CSS(层叠样式表)是一种用于描述网页外观和布局的样式表语言。它与 HTML 一起,帮助开发者对网页进行美化和布局。CSS通过定义网页元素的颜色、字体、大小、背景、边框等属性,使网页变得更加美…

redis 数据结构

redis 数据结构 动态字符串SDS 优点 获取字符串长度的时间复杂度O(1) 支持动态扩容,减少内存分配次数 新字符串小于1M – 新空间为扩展后字符串长度的两倍 1 新字符串大于1M – 新空间为扩展后字符串长度 1M 1. 内存预分配 二进制安全(记录了字符…

2023金盾杯线上赛-AGRT战队-WP

目录 WEB ApeCoin get_source ezupload easyphp MISC 来都来了 芙宁娜 Honor Crypto 我看看谁还不会RSA hakiehs babyrsa PWN sign-format RE Re1 WEB ApeCoin 扫描发现有源码泄露,访问www.tar.gz得到源码。 在源码中发现了冰蝎马。 Md5解码&am…

【可编程串行接口8251A】:用处、内部结构、各引脚的解释、工作方式

8251A的作用 微机内部的数据传送方式为并行方式。 若外设采用串行方式,则微机与外设之间需加串行接口。 串行接口基本功能就是:输入数据时,进行串/并转换;输出数据时,进行并/串转换。Intel8251A是一种可编程的通用同步…

frp V0.52.3 搭建

下载 https://github.com/fatedier/frp/releases/ 此版本暂时没有windows的,想在windows使用请下载v0.52.2 简易搭建 frps.toml的配置文件,以下12000、8500需要在云服务器中的防火墙中开放tcp # bindPort为frps和frpc通信的端口,需要在防…

渗透测试信息搜集

注:太简陋了,不忍直视 渗透测试信息收集 黑盒测试:给域名 灰盒测试:给域名、账户(或密码) 白盒测试:给域名、账户、密码 授权书 对安全公司进行授权 攻防演习 是对个人进行授权 渗透测试:&#xff0…