Skip to content

Python 虚拟环境管理工具

🔖 Overview

  • Why 虚拟环境管理工具?

在开发过程中,我们可能会使用到不同的 python 版本,或者不同的包,这时候我们就需要一个虚拟环境管理工具,来帮助我们管理这些环境,这样可以避免不同环境之间的冲突,也可以方便的切换环境

  • Why Miniconda?

anaconda 是一个完整的虚拟环境(几个G),但是有时候我们并不需要这么多的包,所以我们可以使用 miniconda,它只包含了 conda 和一些必要的包,因此占用的存储空间很小(大约600MB),我们可以根据自己的需求安装其他包,命令行的功能完全一致,并且在 VScode 和 Pycharm 中也很好地支持了 conda 创建和管理 python 虚拟环境

TIP

写代码一定要借助工具,无论是 VScode 还是 Pycharm ,根据个人习惯选择就行

🎉 选择一个来开启 Python 的开发之旅吧!

虚拟环境管理工具简介
pippython 自带的包管理工具,只能安装 python 包,不能安装其他软件
virtualenv一个独立的 python 环境管理工具,可以创建多个独立的 python 环境,但是所有的
Anaconda一个数据科学工具包,包含了很多数据科学相关的包。
❗️如无必要,避免在如何情况下使用 Anaconda,因为占用空间实在是太大了
MinicondaAnaconda 的精简版,只包含了 conda 和一些必要的包,占用空间小
MiniforgeAnaconda 商用收费后,由社区赞助、领导的 miniforge 成为了替代品。
✅ miniforge 用 GitHub 托管所有的包,只使用 conda-forge 作为默认下载 channel,避开了 Anaconda 的 repository,以避免被追责。
conda-forge 是一个非常好用的 channel
miniforge 对于不同架构的平台支持很好,一些 ARM 架构的硬件平台在无法安装 miniconda 时就完全依赖于 miniforge, 例如树莓派和早期 Apple Silicon 的 MacOS
✅ miniforge 和 miniconda 的安装和使用完全一致
Mamba
Mambaforge

📲 conda 的安装

软件安装包

Linux/MacOS 安装 Miniconda/Miniforge

安装 Miniconda 或者 Miniforge 的过程是完全一致的

bash
cd /tmp # 进入临时目录获取安装包
shell
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
shell
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh
shell
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
  • 或者从 Miniforge 仓库找到对应的安装包
shell
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
shell
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh
shell
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh

根据下载的安装脚本,执行对应的安装,例如 Linux (x86_64) 版本的安装脚本为 Miniconda3-latest-Linux-x86_64.sh,执行如下命令安装

安装方式可以有两种,自动安装和手动安装

  • 自动安装(推荐)

执行命令,自动将 Miniconda 安装到 ~/miniconda3 目录下, -p 参数指定安装路径

shell
bash Miniconda3-latest-Linux-x86_64.sh -b -u -p ~/miniconda3
# MacOS 应该使用 zsh
# zsh Miniconda3-latest-MacOSX-arm64.sh -b -u -p ~/miniconda3

随后激活 conda ,conda 会自动将环境变量添加到 ~/.bashrc

shell
source ~/miniconda3/bin/activate
conda init
  • 手动安装

执行命令,手动安装 Miniconda,这种方式需要回答一些问题,例如安装路径等

shell
bash Miniconda3-latest-Linux-x86_64.sh
# MacOS 应该使用 zsh
# zsh Miniconda3-latest-MacOSX-arm64.sh

安装过程中有几个问题需要回答,分别是:

bash
# 你需要接受 Miniconda/Miniforge 的许可协议,输入 yes
Do you accept the license terms? [yes|no]
>>> yes
bash
# 默认即可
[/home/ubuntu/miniconda3] >>>
bash
# 这一步会初始化 conda,环境变量到 `~/.bashrc` 中,输入 yes ,否则重来吧
You can undo this by running `conda init --reverse $SHELL`? [yes|no]
[no] >>> yes

使用 Miniconda 或者 Miniforge 都是 conda 命令,所以在这里我们统一称之为 conda

安装结束后,需要重启终端,或者执行 source ~/.bashrc 使环境变量生效

Windows 安装 Miniconda

进入Miniconda官网下载对应的安装包

miniconda

win安装直接双击安装包,然后一路 next,有如下两个需要修改

  1. 选择安装类型,建议选择 Just Me,否则需要管理员权限,不方便

miniconda

  1. 选择安装路径,建议默认路径 C:\Users\用户名\miniconda3。也可以设置自定义为其他路径,注意不要有英文路径,并且安装的目录最后要是 miniconda3 结尾

miniconda

安装完成后,可以查看安装目录是否存在

miniconda

接下来是最重要的一步,将 conda 添加到环境变量中,这样我们就可以在任何地方使用 conda 命令了

按照下面步骤:

  1. 搜索框输入「环境变量」,选择 「编辑账户的环境变量」打开

miniconda

  1. 点击「环境变量」按钮

miniconda

  1. 在 「用户变量」 (请一定不要添加到「系统变量」中)中找到 Path,点击编辑

miniconda

  1. 点击新建,输入 C:\Users\用户名\miniconda3\condabin(或者刚才的安装路径加上 \condabin),然后点击确定,并一路确定返回

miniconda

然后打开 cmd 或者 powershell(推荐) 输入 conda,如果如下内容

miniconda

随后需要执行初始化脚本,确保可以在终端中使用 conda 命令,--all 确保可以激活在全部终端的使用,例如可以在 git bash 中

ps1
conda init --all

win 系统默认是禁止运行脚本的,所以在 powershell 中运行脚本可能会报错,如下

ps1
. : 无法加载文件 C:\Users\用户名\Documents\WindowsPowerShell\profile.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参
阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 3
+ . 'C:\Users\用户名\Documents\WindowsPowerShell\profile.ps1'
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [],PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

需要用管理员权限打开 powershell,然后输入 set-executionpolicy remotesigned,然后输入 Y 确认(运行完成脚本后,可以关闭权限,避免恶意脚本的运行;个人电脑的话,可以打开)

ps1
set-executionpolicy remotesigned
ps1
set-executionpolicy restricted

🧱 conda 基础

取消默认激活

TIP

需要注意的是,conda 不应该默认激活,这是因为有些软件安装的时候需要依赖于系统自带的 Python 而非虚拟环境的 Python ,否则当删除虚拟环境目录后某些软件失效。

(建议)关闭默认激活

shell
conda config --set auto_activate_base false

创建虚拟环境

创建一个名为 conda_test 的虚拟环境,并且指定 python 版本为 3.10,如果不使用python那么可以不指定python版本,而得到一个空环境

shell
conda create -n conda_test python=3.10 -y
shell
conda create -n conda_test -y
  • -n 参数表示指定虚拟环境的名称
  • -y 参数表示自动安装,不需要确认

这种情况下,该虚拟环境的路径会在 ~/miniconda3/envs/conda_test

但是也可以将虚拟环境安装在项目内或者其他指定路径,例如在当前目录下创建一个名为 conda_test 的虚拟环境

shell
conda create -p ./.env/conda_test python=3.10 -y

这里推荐环境安装在 .env 目录下,这样可以避免环境文件污染项目目录,也便于 .gitignore 管理

查看所有的虚拟环境,可以使用以下任意命令

shell
conda env list
conda info --envs
conda info -e

激活虚拟环境

激活虚拟环境 conda_test

shell
conda activate conda_test
shell
# 这种情况下建议在环境路径前添加 `./`,否则可能会从系统环境中查找
conda activate ./.env/conda_test

在激活虚拟环境后,终端的提示符会变成 (conda_test),表示当前环境为 conda_test,这时候安装的包都会安装在当前虚拟环境中

在 shell 中使用虚拟环境

在 shell 中使用虚拟环境,可以使用 source 命令,例如在 shell 中使用虚拟环境 conda_test

shell
ENV_PATH=conda_test         # 默认路径
# ENV_PATH=./.env/conda_test  # 指定路径
eval "$(conda shell.$(basename $SHELL) hook)"
conda activate $ENV_PATH

退出和删除虚拟环境

退出虚拟环境,可以使用以下命令

shell
conda deactivate

删除虚拟环境 conda_test,可以使用以下命令

shell
conda remove -n conda_test --all

conda 的 channel

conda 的 channel 是一个包的仓库,可以理解为一个软件源,我们可以从 channel 中下载软件包,conda 默认的 channel 是 defaults,查看当前的 channel

shell
conda config --show channels

但是有时候我们需要从其他 channel 中下载包,例如 conda-forge,这时候我们可以添加 channel

shell
conda config --add channels conda-forge

还原为默认 channel

shell
conda config --remove channels conda-forge

⏰ 最后更新于: