Miniforge

为什么conda装包那么难用??? - 知乎
终端中运行 conda install 命令后一直显示“Solving environment: \ ”conda一直在solving environment-CSDN博客
性能 — conda 25.1.1 文档 - Conda 包管理器
Miniforge: conda, mamba and conda-forge — Fluiddyn Howto book
Anaconda vs. Miniconda vs. Miniforge - 知乎
conda太慢怎么办,使用mamba代替龟速conda - 知乎
Miniforge —— 轻量化的 conda 解决方案-CSDN博客
企业可商用的conda:「Miniforge」+「conda-forge」 - 教程 - yjbjingcha - 博客园

Windows下我从Anaconda转向了Miniforge,后者没那么臃肿。mamba已经自动预装好

Miniconda

Ubuntu下deb版本Miniconda

RPM and Debian Repositories for Miniconda — conda 25.5.2.dev69 documentation
Anaconda | RPM and Debian Repositories for Miniconda
Miniforge没有预构建的deb包,我还是用Miniconda。直接用下面的指令一键安装

# Install our public GPG key to trusted store
curl https://repo.anaconda.com/pkgs/misc/gpgkeys/anaconda.asc | gpg --dearmor > conda.gpg
install -o root -g root -m 644 conda.gpg /usr/share/keyrings/conda-archive-keyring.gpg

# Check whether fingerprint is correct (will output an error message otherwise)
gpg --keyring /usr/share/keyrings/conda-archive-keyring.gpg --no-default-keyring --fingerprint 34161F5BF5EB1D4BFBBB8F0A8AEB4F8B29D82806

# Add our Debian repo
# echo "deb [arch=amd64 signed-by=/usr/share/keyrings/conda-archive-keyring.gpg] https://repo.anaconda.com/pkgs/misc/debrepo/conda stable main" > /etc/apt/sources.list.d/conda.list
# **NB:** If you receive a Permission denied error when trying to run the above command (because `/etc/apt/sources.list.d/conda.list` is write protected), try using the following command instead:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/conda-archive-keyring.gpg] https://repo.anaconda.com/pkgs/misc/debrepo/conda stable main" | sudo tee -a /etc/apt/sources.list.d/conda.list

sudo apt update
sudo apt install conda

注意,每次使用conda前需要

source /opt/conda/etc/profile.d/conda.sh

或者一劳永逸的办法,参照初始化
如果只想在VSCode中一劳永逸,参照VSCode自动激活
换源,参见换源
日常使用,参见管理虚拟环境
安装包裹想提速,推荐在base下安装个mamba

Conda

这是什么

我认为它其实是更像docker的环境管理器,在功能上Conda可以看作是 pip 和 virtualenv 的组合,但实际上conda还包括python之外的包。pip不管理环境,且不将python视为包

配置文件位于

python原生venv不香嘛……不香。我不想把Ubuntu预装的python污染了,也不想用那么新版的python

换源

miniconda更换清华源踩坑 - 简书
conda config — conda 25.7.0 documentation
conda Collecting package metadata (repodata.json)卡住或 failed问题_collecting package metadata (repodata.json):-CSDN博客
conda Collecting package metadata (repodata.json)卡住或 failed问题 - SBOOK灵感之窗
conda 中如何移除默认源 - 小鲨鱼2018 - 博客园
conda删除默认的镜像源-CSDN博客

问题描述:conda换清华源后,下载时在Collecting package metadata (repodata.json)出现卡顿或者失败
问题原因:使用代理软件(clash for windows)
解决方法:将.condarc中的清华源的https全部换成http,或者将代理软件设置为全局代理

代理问题解决,但必须一直挂着梯子才能勉强连上,很慢,不挂梯子根本用不了。在我放弃anaconda并换成miniforge,并把conda换成mamba后,终于找到了我安装卡顿和失败的罪魁祸首(当然,解决完mamba的网络问题后,mamba开始快到飞起,conda还是一塌糊涂):

critical libmamba Multiple errors occurred:
    Download error (35) SSL connect error [https://repo.anaconda.com/pkgs/main/noarch/repodata.json]
    schannel: next InitializeSecurityContext failed: CRYPT_E_REVOCATION_OFFLINE (0x80092013) - The revocation function .
    Subdir pkgs/main/noarch not loaded!
    Subdir pkgs/r/noarch not loaded!
    Subdir pkgs/msys2/noarch not loaded!
    Subdir conda-forge/noarch not loaded!
    If you run into this error repeatedly, your package cache may be corrupted.
    Please try running `mamba clean -a` to remove this cache before retrying the operation.

    If you still are having issues, please report the error on `mamba-org/mamba`'s issue tracker:
    https://github.com/mamba-org/mamba/issues/new?assignees=&labels=&projects=&template=bug.yml

通过conda info可以看到

populated config files : C:\ProgramData\miniforge3\.condarc
                         C:\Users\enoch\.condarc

所以只要有官方源残留,网络连接就可能失败,下载包就可能卡死或失败,一定要把旧源删除!

所以换源切记按下面的方式换(https挂梯子全局代理易出问题,采用http)

conda config --show channels

conda config --remove channels defaults
conda config --system --remove channels conda-forge

conda config --system --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --system --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge 
conda config --system --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --system --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --system --get channels

(可选)设置搜索时显示通道地址,便于诊断问题(mamba的显示非常详尽,看来不需要了)

conda config --set show_channel_urls yes
conda config --show show_channel_urls

conda创建虚拟环境太慢,Collecting package metadata (current_repodata.json): failed_conda collecting package特别慢-CSDN博客

最终C:\ProgramData\miniforge3\.condarc如下

channels:
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

可以用conda info检查一下整体配置信息,看到镜像源也成功配置

初次使用

import sys; sys.executable

用它来检验python安装位置。选择Interpreter后,VSCode告诉我已经进入了环境,但是不显示环境名。
Activate Environments in Terminal Using Environment Variables · microsoft/vscode-python Wiki
解决vscode终端不显示conda环境变量名称问题【详细步骤!实测可行!!】vscode不显示conda虚拟环境-CSDN博客
(48 封私信 / 80 条消息) conda虚拟环境名称无法在vscode中的powershell显示的问题 - 知乎

于是对于bash,每次都要输入

source /opt/conda/etc/profile.d/conda.sh

对于powershell,每次都要输入

C:\ProgramData\anaconda3\shell\condabin\conda-hook.ps1

即可。因为我不想初始化

取消初始化,仅在VSCode使用

conda init — conda 25.1.1 文档 - Conda 文档
一打开终端就默认进入conda的base环境,取消方法_conda开机进入base环境-CSDN博客
Anaconda太霸道了!(conda deactivate退出虚拟环境)miniconda-CSDN博客
安装conda后取消命令行前出现的base,取消每次启动自动激活conda的基础环境, 使用ubuntu 自带的Python环境 - clemente - 博客园
因为Linux通常自带python解释器,我不希望系统内部运行的python被conda接管,所以可以取消初始化。

conda init --reverse # Undo effects of last conda init.

也可以对指定的终端进行修改

conda init --reverse bash

在终端中每次使用前还要参照“初次使用”的命令。

新版本的VSCode会尝试激活环境,但只能莫名其妙弹个不起作用的窗
vscode新建终端时自动激活conda会弹窗powershell? - 知乎
python - 如何避免 conda activate base 在我的 VS Code 编辑器中自动执行?Stack Overflow中文网
CMD window show up during conda env activation on Windows · Issue #20836 · microsoft/vscode-python
Setting up conda in powershell for Windows, activating on powershell startup

原因是,下面的命令会在vscode指定conda环境时自动输入。第一句话就能让终端发现conda

C:\ProgramData\miniforge3\Scripts\activate
conda activate XXX

但是它只对cmd和bash有效,对powershell会进入bash的脚本,创建一个cmd进程然后马上退出cmd从而没有变化

实际上,本来VSCode的Python插件应该修复这个漏洞,把自动执行的C:/ProgramData/miniforge3/Scripts/activate换成C:\\ProgramData\\miniforge3\\shell\\condabin\\conda-hook.ps1
或者Conda修复这个漏洞,让activate能够支持PowerShell

先尝试走conda这条路
在WIN10 PowerShell中使用并激活Anaconda虚拟环境 - 知乎
powershell下利用Anaconda创建并激活python虚拟环境_powershell 进anaconda-CSDN博客
解决Win10 PowerShell无法激活Anaconda环境的问题 - Dereen - 博客园
BCSharp/PSCondaEnvs: Implementation of Conda's activate/deactivate functions in Powershell.
Liquidmantis/PSCondaEnvs: Drop in replacement scripts that replicate Conda's activate/deactivate commands in Powershell.
Pscondaenvs | Anaconda.org
这个pscondaenvs已经过时了,conda这条路走不通。即使自创一个activate.ps1如下

. "$PSScriptRoot/../shell/condabin/conda-hook.ps1"
conda activate

VSCode也不能正确执行,还是自动执行C:/ProgramData/miniforge3/Scripts/activate而非C:/ProgramData/miniforge3/Scripts/activate.ps1。我不想把activate文件暴力替换,因为这是留给bash的脚本。

而VSCode呢,只有"python.terminal.activateEnvironment": true一条设置,根本无法指定activate的路径。常规的配置方法走不通。
CMD window show up during conda env activation on Windows · Issue #20836 · microsoft/vscode-python
A bash script (AnaConda/Scripts/activate)cause a pop-up cmd window in Windows11. · Issue #15106 · conda/conda
vscode opens the terminal to automatically execute the environment activation command, and opens the cmd window · Issue #259970 · microsoft/vscode

最终我在Powershell中设置一个别名

Set-Alias "C:/ProgramData/miniforge3/Scripts/activate" "C:/ProgramData/miniforge3/shell/condabin/conda-hook.ps1"

也就是在VSCode的settings.json中设置

    "terminal.integrated.profiles.windows": {
        "PowerShell": {
            "source": "PowerShell",
            "icon": "terminal-powershell",
            "args": ["-NoExit", "-Command", "Set-Alias 'C:/ProgramData/miniforge3/Scripts/activate' 'C:/ProgramData/miniforge3/shell/condabin/conda-hook.ps1'"]
        }
    }

唉,终于好使了(ᗜˬᗜ)

新问题:如果我这样设置settings.json,会导致我的任何tasks.json的配置无法使用,因为Powershell无法接收两个-Command参数。

最终我在D:\Documents\WindowsPowerShell\profile.ps1(conda init会影响到的配置文件)添加 ```

Set-Alias 'C:/ProgramData/miniforge3/Scripts/activate' 'C:/ProgramData/miniforge3/shell/condabin/conda-hook.ps1'

全局性地设置了别名。唉

管理虚拟环境

Anaconda conda常用命令:从入门到精通_conda list-CSDN博客
使用conda安装requirement.txt指定的依赖包_conda requirements txt安装-CSDN博客
创建虚拟环境(同时安装必要的包)

conda create -n env_name python=3.8
conda create -n env_name numpy matplotlib python=3.8

激活虚拟环境

conda activate env_name

查询、搜索、检查、更新包

conda list
conda search package_name
conda list pkgname # 检查是否安装这个包
conda update numpy

指定镜像源的安装包

conda create -n env_name python=3.12 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda install -c 镜像源 包名
conda install pkg_name -c conda_forge

卸载包及其被依赖者

conda uninstall package_name

两种方法退出虚拟环境

conda activate # 激活默认的base环境
conda deactivate # 解除默认的当前环境

删除指定虚拟环境及其中所安装的所有包

conda remove --name env_name --all

只删除虚拟环境中的某个或者某些包

conda remove --name env_name  package_name

导出环境(类似requirements.txt)

conda env export --name myenv > myenv.yml # 获得环境中的所有配置
conda env create -f myenv.yml # 重新还原环境

重命名

conda rename -n old_name new_name

环境重置

conda list --revisions

在这里插入图片描述

conda install --revision [revision number]

举个例子

conda install --revision 0

在这里插入图片描述
如图回滚成功
在这里插入图片描述
大功告成,缺什么包安装就可以!!!

清理conda缓存

1.手动清理缓存

conda clean -p # 删除没有用的包 --packages
conda clean -t # 删除tar打包 --tarballs
conda clean -y -all # 删除所有的安装包及cache(索引缓存、锁定文件、未使用过的包和tar包)
conda clean --all
conda clean -h # 帮助

该命令将清除conda缓存中的所有不必要的文件。执行此命令后,conda将删除conda缓存目录中的所有文件。如果不希望删除所有缓存文件,则可以使用以下命令:

conda clean --packages

该命令将仅清除当前conda环境中的软件包缓存。我们可以每隔一段时间手动清理一次缓存,以获得最佳体验。

2.自动清理缓存

我们可以设置自动清理conda缓存。要设置自动清理功能,请运行以下命令:

conda config --set auto_remove_cached True

此命令将在conda安装或更新软件包时自动清理conda缓存。

Anaconda

还是搞不懂Anaconda是什么?读这一篇文章就够了-CSDN博客
~~Windows环境下我选择整个anaconda,就像普通大型软件一样安装,非常省心。~~臃肿的专有软件,放弃。投入Miniforge的怀抱。
ANACONDA是一个包含180+的科学包及其依赖项的发行版本。可以创建一个独立的Python环境,添加了许多常用的功能包,同时Anaconda还附带捆绑了两个非常好用的交互式代码编辑器(Spyder、Jupyter notebook)

如果不设置环境变量,也不初始化,那每次使用前请运行

C:\ProgramData\anaconda3\shell\condabin\conda-hook.ps1

或者一劳永逸的办法,参照[初始化]
如果只想在VSCode中一劳永逸,参照VSCode自动激活

隐藏Anaconda Navigator弹窗

右上角File→Preferences

Conda可选操作

可选:初始化

要想让终端自动发现conda,我又不想破坏PATH环境变量,一个可选的方案是,初始化。
(48 封私信 / 80 条消息) conda的初始化问题 - 知乎
我不喜欢把conda放进PATH。导致电脑找不到conda程序位置。

参照“初次使用”的命令,先让终端能够发现conda;运行以下命令来初始化 Conda:

conda init
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

在弹出信息之后输入 y ,即可
重启VSCode,修改设置后,重启VSCode以确保更改生效。最后成功显示

这样的副作用是,一旦打开终端,base环境就被激活。实际上每次只要输入

conda deactivate base

就可以回到系统默认的Python。可以在conda的设置里面取消这个
一打开终端就默认进入conda的base环境,取消方法_conda开机进入base环境-CSDN博客

conda config --set auto_activate_base false

然后重启终端即可。

Windows下,对于不显示环境名的问题,还要输入以下命令:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

或者解决windows11在vscode中powershell终端无法调用anaconda/miniconda的base虚拟环境 - 知乎

# 1. 查看系统执行策略
>> get-executionpolicy
Restricted

# 2. 修改系统执行策略
>> set-executionpolicy remotesigned
# 在交互中选择是,Y

重启终端。

可选:环境变量

我不建议这么做,只需要conda初始化就行了,环境变量搞太多会乱。

As of Anaconda Distribution 2022.05, the option to add Anaconda to the PATH environment variable during an All Users installation has been disabled. This was done to address a security exploit. You can still add Anaconda to the PATH environment variable during a Just Me installation.

系统变量选择path,双击进入

新建环境变量**【根据自己安装的盘,选择对应的盘】**

D:\anaconda3
D:\anaconda3\Scripts
D:\anaconda3\Library\bin
D:\anaconda3\Library\mingw-w64\bin

在windows菜单栏搜索Anaconda,打开anaconda prompt

输入这行代码,查看版本号,检查是否成功安装

conda --version

成功安装会显示Anaconda的版本号

可选:修改环境保存路径

最新版最详细Anaconda新手安装+配置+环境创建教程-CSDN博客
因为更改环境保存路径和更改下载源都可以在.condarc文件中修改,这里一次性配置完

Title

 打开上面的anaconda prompt命令窗口,输入

conda info

没有修改的conda的pkgs和envs均保存在C盘,为了不占用系统盘的空间,我们需要修改保存的位置
 

在C盘-用户-用户名,找到.condarc,如果找不到打开anaconda prompt输入以下命令

conda config --set show_channel_urls yes

即可找到,用记事本打开

删除其他的,输入以下指令【注意修改为自己想要安装的盘,我这里修改为F盘】

envs_dirs:  - F:\Anaconda3\envspkgs_dirs:  - F:\Anaconda3\pkgs

CTRL + S保存。可以检查一下整体配置信息

conda info

首先pkgs和envs都修改为F盘了

可选:从Anaconda.org中获取安装包

当使用conda install无法进行安装时,可以考虑从Anaconda.org中获取安装包的命令,并进行安装。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

复制“To install this package with conda run:”下方的命令,并粘贴在终端中执行

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我这里下载的是mindspore,执行命令conda install mindspore。因为我已经下载好了,这里我就不演示了。

注:在此环境安装的包,退出这个环境后是无法使用的!