【一文讲清楚 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问题

写在最后

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】什么是栈?

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 📌栈的定义 📌元素进栈出栈的顺序 📌栈的抽象数据类型 📌栈的顺序存储结构 📌栈的链式存储结构 链栈的进…

MySql之索引,视图,事务以及存储过程举例详解

一.数据准备 数据准备可参考下面的链接中的数据准备步骤 MySql之内连接,外连接,左连接,右连接以及子查询举例详解-CSDN博客 (如有问题可在评论区留言) 二.存储过程 1.定义 存储过程 PROCEDURE ,也翻译…

【代码】基于量子粒子群算法(QPSO)优化LSTM的风电、负荷等时间序列预测算法matlab

程序名称:基于量子粒子群算法(QPSO)优化LSTM的风电、负荷等时间序列预测算法 实现平台:matlab 代码简介:代码是基于QPSO-LSTM的负荷、光伏、风电等时间序列预测,MATLAB编写。包含LSTM(长短时记…

大数据技术之数据安全与网络安全——CMS靶场(文章管理系统)实训

大数据技术之数据安全与网络安全——CMS靶场(文章管理系统)实训 在当今数字化时代,大数据技术的迅猛发展带来了前所未有的数据增长,同时也催生了对数据安全和网络安全的更为迫切的需求。本篇博客将聚焦于大数据技术背景下的数据安全与网络安全&#xff…

面对困境时的力量——《难不难》与歌手荆涛的坚持

歌手荆涛演唱的《难不难》不仅是一首歌曲,更是一种精神的呈现。它告诉我们,面对问题时,只要我们坚持并勇往直前,一切困难都会变得简单。无论前方有多少险阻,总有过去的那一天,只要我们不放弃,就…

【计算机网络学习之路】日志和守护进程

文章目录 前言一. 日志介绍二. 简单日志1. 左字符串2. 右字符串 三. 守护进程1. ps -axj命令2. 会话扩展命令 3. 创建守护进程 结束语 前言 本系列文章是计算机网络学习的笔记,欢迎大佬们阅读,纠错,分享相关知识。希望可以与你共同进步。 本…

JDK、JRE、JVM的特点和关联

Java 的三个重要的概念是 JDK(Java Development Kit)、JRE(Java Runtime Environment)和 JVM(Java Virtual Machine)。它们之间有着密切的关联,同时又有不同的职责和特点。 JDK(Java…

中伟视界:创新解决方案,搭建自适应的AI算法模型训练平台

搭建AI算法模型自训练平台是当今人工智能领域的热门话题,但是其中存在着许多技术难点需要克服。 自训练平台需要具备高效的算法模型,这就要求能够处理庞大的数据量并进行高速计算。 平台需要具备强大的数据管理及存储能力,以满足训练过程中的…

C#,《小白学程序》第二十六课:大数乘法(BigInteger Multiply)的Toom-Cook 3算法及源程序

凑数的&#xff0c;仅供参考。 1 文本格式 /// <summary> /// 《小白学程序》第二十六课&#xff1a;大数&#xff08;BigInteger&#xff09;的Toom-Cook 3乘法 /// Toom-Cook 3-Way Multiplication /// </summary> /// <param name"a"></par…

C语言进阶之笔试题详解(1)

引言&#xff1a; 对指针知识进行简单的回顾&#xff0c;然后再完成笔试题。 ✨ 猪巴戒&#xff1a;个人主页✨ 所属专栏&#xff1a;《C语言进阶》 &#x1f388;跟着猪巴戒&#xff0c;一起学习C语言&#x1f388; 目录 引言&#xff1a; 知识简单回顾 指针是什么 指针变…

基于51单片机的公交自动报站系统

**单片机设计介绍&#xff0c; 基于51单片机的公交自动报站系统 文章目录 一 概要公交自动报站系统概述工作原理应用与优势 二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 很高兴为您介绍基于51单片机的公交自动报站系统&#xff1a; 公交自动报…

[网鼎杯 2020 朱雀组]Nmap

启动环境 结合题目首先就是要知道关于关于nmap命令 相关的命令-oN 标准保存 -oX XML保存 -oG Grep保存 -oA 保存到所有格式 -iL 读取文件内容&#xff0c;以文件内容作为搜索目标 -o 输出到文件 -sP Ping 扫描 还有许多 nmap命令https://blog.csdn.net/weixin_735627…

【知网稳定检索】第九届社会科学与经济发展国际学术会议 (ICSSED 2024)

第九届社会科学与经济发展国际学术会议 (ICSSED 2024) 2024 9th International Conference on Social Sciences and Economic Development 第九届社会科学与经济发展国际学术会议(ICSSED 2024)定于2024年3月22-24日在中国北京隆重举行。会议主要围绕社会科学与经济发展等研究…

java io 流,输入流和输出流;节点流和处理流;字节流和字符流

文章目录 java 中 IO 流分为几种?按照流的流向分&#xff0c;可以分为输入流和输出流&#xff1b;按照流的角色划分为节点流和处理流。IO流主要的分类方式有以下3种&#xff1a; java中的IO流也是工作中使用到比较频繁的一个内容&#xff0c;今天以这篇文章来了解它的概念和整…

快速认识Linux的几个指令

我们先简单认识几个指令&#xff0c;为之后的指令学习打好基础 打开XShell并登录云服务器 01.pwd指令 pwd命令的作用是显示当前在Linux系统中所处的路径 02.ls指令 ls命令的作业是罗列出当前路径下的文件名&#xff08;即pwd的路径下&#xff09;&#xff0c;由于我们没有新…

2023.11.23使用flask实现在指定路径生成文件夹操作

2023.11.23使用flask实现在指定路径生成文件夹操作 程序比较简单&#xff0c;实现功能&#xff1a; 1、前端输入文件夹 2、后端在指定路径生成文件夹 3、前端反馈文件夹生成状态 main.py from flask import Flask, request, render_template import osapp Flask(__name__)a…

WorkPlus即时通讯软件,以自主安全为底座,连接工作的一切

在当今竞争激烈的商业环境中&#xff0c;中大型企业对于移动办公平台的需求越来越迫切。在众多可选的平台中&#xff0c;WorkPlus凭借其高性价比和针对中大型企业的特色功能&#xff0c;成为了许多企业的首选。本文将为各位读者深度解析WorkPlus私有化部署的优势&#xff0c;带…

Co-DETR:DETRs与协同混合分配训练代码学习笔记

关于论文的学习笔记&#xff1a;Co-DETR:DETRs与协同混合分配训练论文学习笔记-CSDN博客 作者提出了一种新的协同混合任务训练方案&#xff0c;即Co-DETR&#xff0c;以从多种标签分配方式中学习更高效的基于detr的检测器。这种新的训练方案通过训练ATSS和Faster RCNN等一对多标…

Proteus仿真--基于PG12864LCD设计的指针式电子钟

本文介绍基于PG12864LCD设计的指针式电子钟&#xff08;完整仿真源文件及代码见文末链接&#xff09; 仿真图如下 本设计中时间芯片选用DS1302芯片&#xff0c;液晶选用PG12864LCD模块&#xff0c;按键K1-K3&#xff0c;K1用于时分选择&#xff0c;K2用于调整功能&#xff0c…

LLaMA 2:开源的预训练和微调语言模型推理引擎 | 开源日报 No.86

facebookresearch/llama Stars: 36.0k License: NOASSERTION LLaMA 2 是一个开源项目&#xff0c;用于加载 LLaMA 模型并进行推理。 该项目的主要功能是提供预训练和微调后的 LLaMA 语言模型的权重和起始代码。这些模型参数范围从 7B 到 70B 不等。 以下是该项目的关键特性…