0x0 简介
用这个教程简单记录一下 conda 在 mac 上的安装教程以及怎样在 vscode 中切换环境
[引用]
https://blog.csdn.net/Linshaodan520/article/details/138734234
0x1 什么是 conda?
在初学Python之时,就常听别人说用 conda 有多方便,一直不以为然,直到接触需要调用有大量依赖库及版本间有显著差异的深度强化学习领域时,才知道用 conda 管理环境会有多方便,那么什么是 conda?
Conda 发行并开源于 2012 年,是一个可以在Windows、maxOS和Linux上运行的包和环境管理系统,它能够适用于任何语言的打包和分发,包括Python、R、Ruby、Lua、Java、C/C++等。Conda 允许用户方便地安装、运行和更新不同版本的二进制软件包与该计算平台所需要的所有库(以及库的依赖项)。在实际当中,利用 conda 最主要的目的是为了使得不同版本Python环境、不同版本模块能够共存和灵活切换。
除了 conda,我们常常看到的 Anaconda 和 Miniconda 又是什么呢?接下来将介绍 conda 与它们之间的区别。
0x1.1 Conda 与 Anaconda 的区别
诸如 Anaconda、Miniconda、Bioconda(用于计算生物学)等都是基于 conda 的工具软件,这些软件均包含 conda 包和环境管理器,但两者的概念仍要进行一定的区分。
Anaconda 是一个大而全的软件发行版,是一个预先建立和配置好的模块集,能够安装在操作系统上使用。它包含了Python本身和数百个第三方开源项目的二进制文件,如 numpy、scipy、ipython、matplotlib等,这些库基本是为了方便处理数据科学相关的问题。
Miniconda 也是一个软件发行版,但它仅包含python、conda 和 conda 的依赖项,本质上就是一个空的用来安装 conda 环境的安装器,它没有 Anaconda 中那么多的包,可以理解为 Anaconda 的精简版,能够方便用户按照自己的需求,从零开始构建任意的环境。
尽管可以独立地下载安装 conda 而不用 Anaconda 和 Miniconda,但后两者为提供了 conda 安装环境,使用起来会更方便。
0x2 下载安装
这里我们演示 Miniconda 的下载安装,软件包的下载来源有两种:
- 官方网站:https://docs.anaconda.com/free/miniconda/miniconda-install/
- 清华源:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/,个人试了下镜像源关闭了,好像是因为未取得 Anaconda 和 Miniconda 的授权。
(1)检查系统条件是否满足
在下载安装 Miniconda 之前,先检查下电脑的系统及硬件等条件是否符合安装要求。如果因为系统版本较旧的原因,可以下载对应的旧版本 Miniconda,以下是官网中对系统要求的描述.
(2)下载相应的安装包
如下图,以 Mac installers 为例,不同版本的 Miniconda 安装包可以支持的最高版本的 python 情况不同,可以按需下载,这里我下载了支持 python3.12 的软件版本.
(3)执行安装
下载到后缀为 pkg 的 miniconda 文件后,一路点安装即可,这里不再赘述
(4)检查是否安装成功
完场上述步骤之后,需要再检查下 conda 是否能够正常使用打开终端,在终端中输入 **conda --version
,回车如果返回了 conda 版本信息则说明安装成功。
0x3 配置并使用conda
至此完成了 conda 包和环境管理工具的安装,此时我们可以进行一些简单的配置并尝试创建 conda 环境,安装需要的库和运行简单的 python 程序。
配置下载源
Conda 包管理器下载各类库的来源是国外的服务器,常常会面临下载速度慢的问题。可以为 conda 添加软件包通道(channel),以清华源为例,在打开的 **Anaconda prompt
控制台窗口中,输入如下命令可以将清华源的两个地址添加到通道。
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
为了在查看 conda 软件包通道的下载链接时能显示我们手动配置的通道地址,可以通过如下命令进行设置:
conda config --set show_channel_urls yes
如果不配置下载源,conda 会使用默认的软件包通道,即从官方 Anaconda 仓库获取软件包。具体的软件包通道情况可以通过 conda config --show
命令查看,返回的信息不仅能看到下载源的地址信息,还能看到创建的 conda 环境所在的文件夹。如果想要重置下载源的信息,可以用 conda config --remove-key channels
命令实现。
环境管理
现在来到 conda 的另一大功能,就是环境管理,它可以创建、管理和切换不同的环境,这些环境之间是相互独立的,每个环境当中的 Python 版本和软件包版本可以不相同,使得我们可以把依赖版本不同的项目放在同一台设备上的不同 conda 环境中运行。
1.创建(删除)环境
要创建一个新的 conda 环境,可以使用 conda create 命令,指定该环境下所需的 Python 版本和要安装的软件包。例如:
conda create --name myenv python=3.8 numpy matplotlib
这将创建一个名为 myenv 的环境,并在其中安装 Python 3.8、NumPy 和 Matplotlib。在创建环境时,会有软件包列表的提示。输入 y 确认后即等待环境创建即可。
如果不想要一个环境了,例如我们要把 myenv 这个名字的环境删除,可以通过如下命令进行删除:
conda remove --name myenv --all
注意: 如果你的环境没有一个明确的名字(比如它直接在项目文件夹里创建),你可能需要使用路径来删除。在 conda env list
的输出中找到它的路径,然后使用 --prefix
或 -p
参数:
Bash
# 假设路径是 /Users/your_username/your_project/.conda
conda env remove --prefix /Users/your_username/your_project/.conda
执行这个命令后,Conda 会尝试移除环境,当它发现文件夹已经不在时,通常会直接清理掉其在配置文件中的条目。
2.激活(切换)环境
经过环境的创建之后,我们用 conda env list
来查看已有的 conda 环境,发现已经创建好了名为 myenv 的环境,但是此时我们根据如下位置判断我们所在的 conda 环境仍然是名为 base
的环境,因此我们要激活并切换到 myenv 环境中。
通过如下命令可实现激活并切换环境的功能
conda activate myenv
如果不切换环境,而只是退出当前环境,可以用 conda deactivate
退出当前的 conda 环境。
3.下载(卸载)库
当我们要在不同环境下安装库时,需要先切换到指定环境当中,例如我们要下载或者卸载 **scipy
,可以执行如下命令进行:
# 下载安装
conda install scipy
# 卸载
conda remove scipy
4.导出环境
当我们想要保存某个环境的配置信息,例如下载源信息、环境的Python版本信息、安装的包的版本信息等,可以先切换到指定环境下,通过以下命令将这些配置信息导出:
conda env export > environment.yml
该命令会将当前的环境配置信息导出到为 environment.yml
配置信息文件,文件导出地址默认为当前工作目录(也可以指定输出的绝对地址)。这时候,我们将配置文件传到另一台电脑,想基于该配置文件创建 conda 环境,可以通过以下命令:
conda env create -f environment.yml
0x4 常见问题
记录一些常见问题
conda无法访问清华源
怎么结束jupyter notebook的进程运行
情况一:启动 Jupyter 的终端窗口还在
这是最常见也是最推荐的方式。
- 找到那个终端窗口:就是你之前输入
jupyter notebook
或jupyter lab
命令后,它一直在输出日志信息的那个窗口。 - 按下
Control + C
:在键盘上同时按下Control
键和C
键。 - 确认关闭:终端会提示你
Shutdown this notebook server (y/[n])?
。意思是“是否要关闭这个 notebook 服务器?” - 输入
y
然后按 回车(Enter) 键确认。
稍等片刻,Jupyter 服务就会被干净地关闭,所有相关的进程也会被终止。
情况二:找不到原来的终端窗口(或已经关闭)
如果你不小心关掉了那个终端窗口,或者是在一个远程服务器上启动后断开了连接,Jupyter 服务其实还在后台运行。这时你需要手动找到并“杀死”这个进程。
步骤 1: 查找正在运行的 Jupyter 服务
Jupyter 有一个内建命令可以列出所有正在运行的服务和它们的端口号。
在任意一个新的终端窗口中输入:
Bash
jupyter server list
或者使用旧一点的命令:
Bash
jupyter notebook list
你会看到类似下面的输出:
Currently running servers:
http://localhost:8888/?token=... :: /Users/your_username/Documents
从这里你可以知道,有一个 Jupyter 服务正在 8888
端口上运行。记下这个端口号。
步骤 2: 通过端口号找到进程并终止它
现在我们知道了端口号,就可以用它来找到对应的进程ID(PID),然后终止该进程。
查找进程 ID (PID):在终端输入以下命令(将
8888
替换成你上一步找到的端口号):
Bashlsof -i :8888
这个命令会列出所有正在使用
8888
端口的进程。输出结果中,找到COMMAND
为Python
或jupyter
的那一行,然后记下它在PID
列的数字。COMMAND PID USER ... NODE NAME Python 52891 your_username ... TCP localhost:8888 (LISTEN)
在这个例子中,进程ID(PID)是
52891
。终止进程 (Kill):使用
kill
命令加上你找到的 PID 来终止它。
Bashkill 52891
这个命令会给进程发送一个“请正常关闭”的信号。通常这就足够了。
强制终止 (如果需要):如果上面的
kill
命令没有效果,你可以使用-9
参数来强制终止进程。这相当于“任务管理器”里的“强制结束”,可能会导致未保存的工作丢失,所以请作为最后手段使用。
Bashkill -9 52891
执行完 kill
命令后,Jupyter 服务就会被彻底终止。
如何在 vscode 里切换 conda 环境
在编辑器里使用 cmd+shift+p
唤出快捷键后,查找 python,选择Select Interpreter
接下来选择 想要的 conda 环境即可,可以新建也可以选中已有的环境
2 条评论
评论一下
唉