软件介绍

  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://docs.anaconda.com/miniconda/

在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或者其他版本,则可以在官网的命令行安装教程下查询对应安装命令,如下图所示。
  3. 使用命令行安装会默认安装最新版本,如果想安装老版本,则可以点击命令行安装教程下面的 To download an older version,查询如何安装老版本,如下图所示。
  4. 安装成功后,Miniconda会默认安装在家目录下,如果要安装在其他目录,则自行更改命令即可。
  5. 在安装后,我们需要执行以下命令(最好在Bash下),来初始化Conda,然后重启Shell。
    source ~/miniconda3/bin/activate
    conda init --all
    
  6. 如果没问题的话,此时就可以看到命令行多了个标签,显示了Conda的初始环境 base

在Windows下安装

  1. Windows下推荐在PowerShell中安装Conda,无论是内置的PowerShell,还是自行安装的PowerShell,都可以。本文章使用自行安装的PowerShell。
  2. 安装方式这里介绍两种,本篇文章使用第二种方式,即通过Scoop安装:
    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. 使用命令行安装会默认安装最新版本,如果想安装老版本,则可以点击官网的命令行安装教程下面的 To download an older version,查询如何安装老版本,如下图所示。
  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+鼠标左键点击它,进入该文件夹。
    3. 找到你当前主题对应的文件,如果不清楚是哪个文件,可以在PowerShell中执行以下命令,查看配置文件中你所用的是哪个主题文件
      notepad $PROFILE
      
    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激活后查看。