Python 虚拟环境管理工具
🔖 Overview
- Why 虚拟环境管理工具?
在开发过程中,我们可能会使用到不同的 python 版本,或者不同的包,这时候我们就需要一个虚拟环境管理工具,来帮助我们管理这些环境,这样可以避免不同环境之间的冲突,也可以方便的切换环境
- Why Miniconda?
anaconda 是一个完整的虚拟环境(几个G),但是有时候我们并不需要这么多的包,所以我们可以使用 miniconda,它只包含了 conda 和一些必要的包,因此占用的存储空间很小(大约600MB),我们可以根据自己的需求安装其他包,命令行的功能完全一致,并且在 VScode 和 Pycharm 中也很好地支持了 conda 创建和管理 python 虚拟环境
TIP
写代码一定要借助工具,无论是 VScode 还是 Pycharm ,根据个人习惯选择就行
🎉 选择一个来开启 Python 的开发之旅吧!
虚拟环境管理工具 | 简介 |
---|---|
pip | python 自带的包管理工具,只能安装 python 包,不能安装其他软件 |
virtualenv | 一个独立的 python 环境管理工具,可以创建多个独立的 python 环境,但是所有的 |
Anaconda | 一个数据科学工具包,包含了很多数据科学相关的包。 ❗️如无必要,避免在如何情况下使用 Anaconda,因为占用空间实在是太大了 |
Miniconda | Anaconda 的精简版,只包含了 conda 和一些必要的包,占用空间小 |
Miniforge | Anaconda 商用收费后,由社区赞助、领导的 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 的过程是完全一致的
- 从 Miniconda官网下载对应的安装包(应该是一个脚本)
cd /tmp # 进入临时目录获取安装包
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
- 或者从 Miniforge 仓库找到对应的安装包
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh
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
参数指定安装路径
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
中
source ~/miniconda3/bin/activate
conda init
- 手动安装
执行命令,手动安装 Miniconda,这种方式需要回答一些问题,例如安装路径等
bash Miniconda3-latest-Linux-x86_64.sh
# MacOS 应该使用 zsh
# zsh Miniconda3-latest-MacOSX-arm64.sh
安装过程中有几个问题需要回答,分别是:
# 你需要接受 Miniconda/Miniforge 的许可协议,输入 yes
Do you accept the license terms? [yes|no]
>>> yes
# 默认即可
[/home/ubuntu/miniconda3] >>>
# 这一步会初始化 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官网下载对应的安装包
win安装直接双击安装包,然后一路 next,有如下两个需要修改
- 选择安装类型,建议选择
Just Me
,否则需要管理员权限,不方便
- 选择安装路径,建议默认路径
C:\Users\用户名\miniconda3
。也可以设置自定义为其他路径,注意不要有英文路径,并且安装的目录最后要是miniconda3
结尾
安装完成后,可以查看安装目录是否存在
接下来是最重要的一步,将 conda 添加到环境变量中,这样我们就可以在任何地方使用 conda 命令了
按照下面步骤:
- 搜索框输入「环境变量」,选择 「编辑账户的环境变量」打开
- 点击「环境变量」按钮
- 在 「用户变量」 (请一定不要添加到「系统变量」中)中找到
Path
,点击编辑
- 点击新建,输入
C:\Users\用户名\miniconda3\condabin
(或者刚才的安装路径加上\condabin
),然后点击确定,并一路确定返回
然后打开 cmd 或者 powershell(推荐) 输入 conda
,如果如下内容
随后需要执行初始化脚本,确保可以在终端中使用 conda 命令,--all
确保可以激活在全部终端的使用,例如可以在 git bash 中
conda init --all
win 系统默认是禁止运行脚本的,所以在 powershell 中运行脚本可能会报错,如下
. : 无法加载文件 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
确认(运行完成脚本后,可以关闭权限,避免恶意脚本的运行;个人电脑的话,可以打开)
set-executionpolicy remotesigned
set-executionpolicy restricted
🧱 conda 基础
取消默认激活
TIP
需要注意的是,conda 不应该默认激活,这是因为有些软件安装的时候需要依赖于系统自带的 Python 而非虚拟环境的 Python ,否则当删除虚拟环境目录后某些软件失效。
(建议)关闭默认激活
conda config --set auto_activate_base false
创建虚拟环境
创建一个名为 conda_test
的虚拟环境,并且指定 python 版本为 3.10,如果不使用python那么可以不指定python版本,而得到一个空环境
conda create -n conda_test python=3.10 -y
conda create -n conda_test -y
-n
参数表示指定虚拟环境的名称-y
参数表示自动安装,不需要确认
这种情况下,该虚拟环境的路径会在 ~/miniconda3/envs/conda_test
但是也可以将虚拟环境安装在项目内或者其他指定路径,例如在当前目录下创建一个名为 conda_test
的虚拟环境
conda create -p ./.env/conda_test python=3.10 -y
这里推荐环境安装在
.env
目录下,这样可以避免环境文件污染项目目录,也便于.gitignore
管理
查看所有的虚拟环境,可以使用以下任意命令
conda env list
conda info --envs
conda info -e
激活虚拟环境
激活虚拟环境 conda_test
conda activate conda_test
# 这种情况下建议在环境路径前添加 `./`,否则可能会从系统环境中查找
conda activate ./.env/conda_test
在激活虚拟环境后,终端的提示符会变成 (conda_test)
,表示当前环境为 conda_test
,这时候安装的包都会安装在当前虚拟环境中
在 shell 中使用虚拟环境
在 shell 中使用虚拟环境,可以使用 source
命令,例如在 shell 中使用虚拟环境 conda_test
ENV_PATH=conda_test # 默认路径
# ENV_PATH=./.env/conda_test # 指定路径
eval "$(conda shell.$(basename $SHELL) hook)"
conda activate $ENV_PATH
退出和删除虚拟环境
退出虚拟环境,可以使用以下命令
conda deactivate
删除虚拟环境 conda_test
,可以使用以下命令
conda remove -n conda_test --all
conda 的 channel
conda 的 channel 是一个包的仓库,可以理解为一个软件源,我们可以从 channel 中下载软件包,conda 默认的 channel 是 defaults
,查看当前的 channel
conda config --show channels
但是有时候我们需要从其他 channel 中下载包,例如 conda-forge
,这时候我们可以添加 channel
conda config --add channels conda-forge
还原为默认 channel
conda config --remove channels conda-forge