软件介绍
- 今天我要介绍的软件是Conda。Conda是一个开源的包管理和环境管理工具,我们主要用它来创建、管理和切换多个Python环境,每个环境可以拥有不同的Python版本和依赖库,这样可以避免不同Python项目之间的依赖冲突。
- 要介绍Conda,那就必须要说明Anaconda和Miniconda。我们需要安装他们两个其中之一才可以使用Conda,他们的区别如下:
- Anaconda的体积较大,因为自带了许多科学计算和数据分析的常用库,如numpy、pandas、matplotlib、scipy、jupyter等
- Miniconda的体积较小,只包含Conda和Python,不自带额外的库,更加轻量化。
- 本篇文章主要介绍如何安装和配置Miniconda,Anaconda自带了太多东西,而这些都可以通过Conda手动配置,这样就可以避免安装不必要的东西。
软件安装
Miniconda官网为:https://docs.anaconda.com/miniconda/
在Linux下安装
- 推荐使用命令行安装,如果你的系统为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
- 如果你的系统是ARM或者其他版本,则可以在官网的命令行安装教程下查询对应安装命令,如下图所示。
- 使用命令行安装会默认安装最新版本,如果想安装老版本,则可以点击命令行安装教程下面的
To download an older version
,查询如何安装老版本,如下图所示。
- 安装成功后,Miniconda会默认安装在家目录下,如果要安装在其他目录,则自行更改命令即可。
- 在安装后,我们需要执行以下命令(最好在Bash下),来初始化Conda,然后重启Shell。
source ~/miniconda3/bin/activate conda init --all
- 如果没问题的话,此时就可以看到命令行多了个标签,显示了Conda的初始环境
base
。
在Windows下安装
- Windows下推荐在PowerShell中安装Conda,无论是内置的PowerShell,还是自行安装的PowerShell,都可以。本文章使用自行安装的PowerShell。
- 安装方式这里介绍两种,本篇文章使用第二种方式,即通过Scoop安装:
- 通过官方命令安装,在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
- 通过Scoop安装,在PowerShell中执行以下命令
scoop install miniconda
- 通过官方命令安装,在PowerShell中执行以下命令
- 使用命令行安装会默认安装最新版本,如果想安装老版本,则可以点击官网的命令行安装教程下面的
To download an older version
,查询如何安装老版本,如下图所示。
- 如果使用Scoop安装Conda,那么会出现一个问题,那就是Conda的环境并不会被持久化。即使是
base
环境,在通过Scoop升级Miniconda后,也会清除其所有包。因此推荐将Miniconda的环境目录改为一个独立的路径,不受Scoop影响,以下为执行步骤:- 打开
~/.condarc
文件(如果没有的话,可以手动创建) - 添加或修改以下配置,该配置指明了Miniconda的环境目录,这里我设置为
~/.conda/envs
envs_dirs: - ~/.conda/envs
- 重启PowerShell,之后尝试创建Miniconda环境,并通过以下命令查询环境所处路径,发现新建环境都位于
~/.conda/envs
目录下了conda env list
- 还需要额外注意的是,
base
环境并不受此设置影响,每次更新时还是会自动清除包。
- 打开
常用命令
- 创建环境(Conda安装成功后,会默认创建环境
base
,建议不要在base
下安装任何包,而是创建一个新环境)conda create -n <环境名称> python=<python版本号>
- 切换环境
conda activate <环境名称>
- 删除环境
conda remove -n <环境名称> --all
- 查看所有环境,会显示环境所在路径以及当前所处环境(用
*
号表示)conda env list
- 查看当前环境安装的Python依赖包
conda list
- 在当前环境下安装和卸载Python依赖包,本文推荐使用
pip
命令而不是conda
命令,pip
命令可以安装的包更加全面。 - 导出当前环境
conda env export > <文件名称.yaml>
- 导入特定环境
conda env create -f <文件名称.yaml>
常见问题
在Fish或者在其他Linux Shell下无法使用Conda
出现该问题主要是因为在安装Conda时,没有针对特定Shell来初始化Conda。可以在Bash下按需要执行以下一个或多个命令来初始化,然后重启对应Shell即可。
- 初始化全部Shell
conda init --all
- 初始化Bash
conda init
- 初始化Fish
conda init fish
进入PowerShell时不会启动默认环境base
如果你是按照本文方法,使用Scoop安装Conda,那么就会出现这种情况。它主要是为了避免污染环境变量,因此每次进入PowerShell时,都需要手动执行 conda activate base
来激活默认环境。如果你觉得这一点很别扭,而且完全不在意环境变量被污染,那么还是推荐使用官方命令来安装。
在PowerShell中不会显示当前环境名称
- 请先进行测试:使用Windows的内置PowerShell(
Win + R
,输入powershell
回车),然后通过Conda命令来激活环境,看当前是否会显示环境名称,确保Conda的安装和初始化并没有问题。 - 如果你使用了Oh My Posh作为PowerShell的美化主题,那么该问题就出在当前主题并没有对Conda作合适的配置,解决办法如下:
- 执行以下命令,该命令会输出所有可用的主题
Get-PoshThemes
- 在最后,上述命令还会输出所有主题所在的文件夹,我们用
ctrl+鼠标左键
点击它,进入该文件夹。
- 找到你当前主题对应的文件,如果不清楚是哪个文件,可以在PowerShell中执行以下命令,查看配置文件中你所用的是哪个主题文件
notepad $PROFILE
- 将其拷贝出来,重命名,比如我这里就改成了
mytheme.omp.json
- 注意:如果你使用的是Scoop来管理Oh My Posh,那么每次升级Oh My Posh时,都会重置主题文件夹,导致原先的修改失效,因此我们需要将这个新的配置文件拷贝到其他地方。至于拷贝到哪里,可以随便你,只需要确保该目录不会被Scoop给修改即可。
- 打开主题文件,搜索并定位到
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" } },
- 保存主题文件,执行以下命令打开PowerShell的配置文件
notepad $PROFILE
- 修改主题文件路径,比如我将主题文件放在了用户家目录下,文件名为mytheme.omp.json,则修改后的内容如下:
oh-my-posh init pwsh --config "C:\Users\用户名\mytheme.omp.json" | Invoke-Expression
- 保存配置文件,然后再PowerShell中执行以下命令,让其生效
. $PROFILE
- 如果配置成功的话,可以看到在命令行上会显示绿色的Conda环境名,如下图所示。如果显示为
NO VERSION
,则可能是因为没有激活环境,可以尝试使用conda activate base
激活后查看。
- 执行以下命令,该命令会输出所有可用的主题
评论