# 软件介绍

1. 今天我要介绍的软件是Conda。Conda是一个开源的包管理和环境管理工具,我们主要用它来创建、管理和切换多个Python环境,每个环境可以拥有不同的Python版本和依赖库,这样可以避免不同Python项目之间的依赖冲突。
2. 要介绍Conda,那就必须要说明Anaconda和Miniconda。我们需要安装他们两个其中之一才可以使用Conda,他们的区别如下:
   1. Anaconda的体积较大,因为自带了许多科学计算和数据分析的常用库,如numpy、pandas、matplotlib、scipy、jupyter等
   2. Miniconda的体积较小,只包含Conda和Python,不自带额外的库,更加轻量化。
3. 本篇文章主要介绍如何安装和配置Miniconda,Anaconda自带了太多东西,而这些都可以通过Conda手动配置,这样就可以避免安装不必要的东西。

# 软件安装

[Miniconda](https://www.anaconda.com/docs/getting-started/miniconda/main)官网为:[https://docs.anaconda.com/miniconda/](https://www.anaconda.com/docs/getting-started/miniconda/main)

## 在Linux下安装

1. 推荐使用命令行安装,如果你的系统为x86_64位版本,则逐一运行以下命令即可。

mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm ~/miniconda3/miniconda.sh

2. 如果你的系统是ARM或者其他版本,则可以在[官网的命令行安装教程](https://docs.anaconda.com/miniconda/install/#quick-command-line-install)下查询对应安装命令,如下图所示。![](https://pic1.imgdb.cn/item/6a06d82975da6ea54d789acf.webp)
3. 使用命令行安装会默认安装最新版本,如果想安装老版本,则可以点击命令行安装教程下面的 `To download an older version`,查询如何安装老版本,如下图所示。
![](https://pic1.imgdb.cn/item/6a06d82975da6ea54d789ace.webp)
4. 安装成功后,Miniconda会默认安装在家目录下,如果要安装在其他目录,则自行更改命令即可。
5. 在安装后,我们需要执行以下命令(最好在Bash下),来初始化Conda,然后重启Shell。

source ~/miniconda3/bin/activate
conda init --all

6. 如果没问题的话,此时就可以看到命令行多了个标签,显示了Conda的初始环境 `base`。

## 在Windows下安装

1. Windows下推荐在PowerShell中安装Conda,无论是内置的PowerShell,还是[自行安装的PowerShell](https://blog.suqingyu.com/archives/dfd7d3d4-f774-4b8e-b0cb-0dd9dc83f937),都可以。本文章使用自行安装的PowerShell。
2. 安装方式这里介绍两种,本篇文章使用第二种方式,即通过[Scoop](https://blog.suqingyu.com/archives/b3803be6-a713-4aea-8638-58b5402811c5)安装:
1. 通过官方命令安装,在PowerShell中执行以下命令

wget "https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe" -outfile ".\miniconda.exe"
Start-Process -FilePath ".\miniconda.exe" -ArgumentList "/S" -Wait
del .\miniconda.exe

2. 通过Scoop安装,在PowerShell中执行以下命令

scoop install miniconda

3. 使用命令行安装会默认安装最新版本,如果想安装老版本,则可以点击[官网的命令行安装教程](https://docs.anaconda.com/miniconda/install/#quick-command-line-install)下面的 `To download an older version`,查询如何安装老版本,如下图所示。
![](https://pic1.imgdb.cn/item/6a06d82975da6ea54d789ad0.webp)
4. 如果使用Scoop安装Conda,那么会出现一个问题,那就是Conda的环境并不会被持久化。即使是 `base`环境,在通过Scoop升级Miniconda后,也会清除其所有包。因此推荐将Miniconda的环境目录改为一个独立的路径,不受Scoop影响,以下为执行步骤:
1. 打开 `~/.condarc`文件(如果没有的话,可以手动创建)
2. 添加或修改以下配置,该配置指明了Miniconda的环境目录,这里我设置为 `~/.conda/envs`

envs_dirs:
- ~/.conda/envs

3. 重启PowerShell,之后尝试创建Miniconda环境,并通过以下命令查询环境所处路径,发现新建环境都位于 `~/.conda/envs`目录下了

conda env list

4. 还需要额外注意的是,`base`环境并不受此设置影响,每次更新时还是会自动清除包。

# 常用命令

1. 创建环境(Conda安装成功后,会默认创建环境 `base`,建议不要在 `base`下安装任何包,而是创建一个新环境)

conda create -n <环境名称> python=<python版本号>

2. 切换环境

conda activate <环境名称>

3. 删除环境

conda remove -n <环境名称> --all

4. 查看所有环境,会显示环境所在路径以及当前所处环境(用 `*`号表示)

conda env list

5. 查看当前环境安装的Python依赖包

conda list

6. 在当前环境下安装和卸载Python依赖包,本文推荐使用 `pip`命令而不是 `conda`命令,`pip`命令可以安装的包更加全面。
7. 导出当前环境

conda env export > <文件名称.yaml>

8. 导入特定环境

conda env create -f <文件名称.yaml>

# 常见问题

## 在Fish或者在其他Linux Shell下无法使用Conda

出现该问题主要是因为在安装Conda时,没有针对特定Shell来初始化Conda。可以在Bash下按需要执行以下一个或多个命令来初始化,然后重启对应Shell即可。

1. 初始化全部Shell

conda init --all

2. 初始化Bash

conda init

3. 初始化Fish

conda init fish

## 进入PowerShell时不会启动默认环境base

如果你是按照本文方法,使用Scoop安装Conda,那么就会出现这种情况。它主要是为了避免污染环境变量,因此每次进入PowerShell时,都需要手动执行 `conda activate base`来激活默认环境。如果你觉得这一点很别扭,而且完全不在意环境变量被污染,那么还是推荐使用官方命令来安装。

## 在PowerShell中不会显示当前环境名称

1. 请先进行测试:使用Windows的内置PowerShell(`Win + R`,输入 `powershell`回车),然后通过Conda命令来激活环境,看当前是否会显示环境名称,确保Conda的安装和初始化并没有问题。
2. 如果你使用了Oh My Posh作为PowerShell的美化主题,那么该问题就出在当前主题并没有对Conda作合适的配置,解决办法如下:
1. 执行以下命令,该命令会输出所有可用的主题

Get-PoshThemes

2. 在最后,上述命令还会输出所有主题所在的文件夹,我们用 `ctrl+鼠标左键`点击它,进入该文件夹。
![](https://pic1.imgdb.cn/item/6a06d82975da6ea54d789acd.webp)
3. 找到你当前主题对应的文件,如果不清楚是哪个文件,可以在PowerShell中执行以下命令,查看配置文件中你所用的是哪个主题文件

notepad $PROFILE


![](https://pic1.imgdb.cn/item/6a06d82875da6ea54d789acc.webp)
4. 将其拷贝出来,重命名,比如我这里就改成了 `mytheme.omp.json`
5. 注意:如果你使用的是Scoop来管理Oh My Posh,那么每次升级Oh My Posh时,都会重置主题文件夹,导致原先的修改失效,因此我们需要将这个新的配置文件拷贝到其他地方。至于拷贝到哪里,可以随便你,只需要确保该目录不会被Scoop给修改即可。
6. 打开主题文件,搜索并定位到 `python`模块,将整个python模块修改为以下内容。以下配置定义了命令行显示Conda环境的外观样式,你也可以后续按需修改。

{
"type": "python",
"style": "plain",
"foreground": "#98C379",
"properties": {
"display_virtual_env": true,
"dispplay_default": true,
"display_version": false,
"home_enabled": true,
"prefix": "\uE235 ",
"postfix": " ",
"display_mode": "always"
}
},

7. 保存主题文件,执行以下命令打开PowerShell的配置文件

notepad $PROFILE

8. 修改主题文件路径,比如我将主题文件放在了用户家目录下,文件名为mytheme.omp.json,则修改后的内容如下:

oh-my-posh init pwsh --config "C:\Users\用户名\mytheme.omp.json" | Invoke-Expression

9. 保存配置文件,然后再PowerShell中执行以下命令,让其生效

. $PROFILE

10. 如果配置成功的话,可以看到在命令行上会显示绿色的Conda环境名,如下图所示。如果显示为 `NO VERSION`,则可能是因为没有激活环境,可以尝试使用 `conda activate base`激活后查看。
 ![](https://pic1.imgdb.cn/item/6a06d82875da6ea54d789acb.webp)