Let's conda!

早就该搞定的 miniconda + vscode 直到开始写论文了才真的认认真真配置好

安装 miniconda

参照官网下载适合版本的miniconda。
安装过程中有两个提醒比较在意,一个是 Register Miniconda3 as my default Python 3.12。选择这个选项意味着让 Miniconda 安装的 Python (默认是 3.12 版本) 成为系统中默认的 Python 版本,也就是其他程序 (比如 vscode、PyCharm) 默认会用这个。但我的电脑上已经有一个 很成熟 用了很久的 python 3.10.10,不想让这两个互相影响,导致一堆乱七八糟的冲突,最后没有选择打勾。
另一个是不推荐 Add Miniconda3 to PATH environment variable,有点反直觉。问了 ChatGPT 老师,说原因是:

  • Conda 的环境机制很依赖 conda activate,不希望你用系统 PATH 中的 python 跑错环境。
  • 把 miniconda 加入 PATH 会让你在终端中直接输 python 时,不确定到底是哪个 python (系统的、miniconda的、其他的?)。
  • 加了 PATH,容易发生冲突,特别是你以后还可能装 pyenv、虚拟环境、或者系统工具。

所以听从推荐,没有加入到 PATH。

安装完成后,可通过开始菜单中的 Anaconda Prompt (miniconda) 或 Anaconda Powershell Prompt (miniconda) 中输入 code 启动 vscode。然后可以在 vscode terminal 中运行 conda 相关的命令,如 conda --version 来检查 conda 的安装是否正确。一旦用这种方式打开一次,之后 vscode 就能识别所有 Conda 环境,包括选择 Jupyter kernel 和解释器 (引用自 ChatGPT)。
可以将 conda 加入 vscode 的配置中,让它每次启动都可以识别 Conda 环境:

  • 打开 vscode 的 Command Palette:Ctrl+Shift+P
  • 输入 Preferences: Open User Settings (JSON),打开 settings.json 添加如下内容:
1
2
3
"terminal.integrated.env.windows": {
"PATH": "PATH_TO_MINICONDA;PATH_TO_MINICONDA\\Scripts;${env:PATH}"
}

举个例子,也就是我的配置:

1
2
3
4
// example
"terminal.integrated.env.windows": {
"PATH": "D:\\miniconda;D:\\miniconda\\Scripts;${env:PATH}"
}

这条配置是告诉 vscode:每次打开 Terminal 时,自动把 Conda 路径加进去。这样就可以直接打开 vscode,不需要再用 Anaconda Prompt。

使用 conda

配置终端环境,在第一次 activate 前需要先 init 一次。运行:

1
2
# initiate conda
conda init

遇到了一个报错 无法加载文件 C:\Users\username\Documents\WindowsPowerShell\profile.ps1,因为在此系统上禁止运行脚本。解决方法是以管理员身份打开 PowerShell,输入:

1
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

这条命令的意思:允许本地脚本运行 (比如 Conda 的 profile.ps1);依然保护你不会执行从网上随便下载的未签名脚本;只改你当前用户的设置,不影响系统其他人 (ChatGPT)。设置完成后重启 vscode,打开 terminal 查看是否还有同样的报错。如果一切正常,此时 Terminal 每行行首应该出现 (base)

创建所需的 conda 环境并激活:

1
2
3
# conda 会根据 python=3.10 最新子版本,也可直接指定,如 python=3.10.10
conda create -n myenv python=3.10
conda activate myenv

激活成功之后,行首的 base 会变为环境名 myenv
安装 jupyter 和 ipykernel 到这个环境中:

1
conda install jupyter ipykernel

把这个环境注册为 Jupyter Kernel:

1
python -m ipykernel install --user --name=myenv --display-name "Python (myenv)"

之后使用 .ipynb 时就可以在 vscode 的 select kernel 中找到这个 kernel。

最后一点 ChatGPT 的叮嘱 ——
只有在下面这些情况才需要手动 conda activate

  • 在 VSCode 的 Terminal 里手动运行脚本 (例如 python script.py)
  • 用 pip, conda, jupyter 命令装东西
  • Debug/测试一些非 notebook 的东西

所以大部分时候只是打开 VSCode 写 .ipynb,根本不用管 activate 不 activate,已经自动切好啦。