在 Ubuntu 上安装和配置 Conda 的完整指南:告别环境混乱
前言:为什么需要 Conda?
对于经常进行数据科学、机器学习、软件开发或科学计算的用户来说,管理项目所需的各种软件包及其依赖关系常常是一个令人头疼的问题。不同的项目可能需要相同库的不同版本,或者依赖于系统上未安装的特定库。如果不加以管理,很容易陷入“依赖地狱”,导致项目之间相互冲突,甚至破坏操作系统环境。
传统的软件包管理器(如 apt、pip)在全局或用户级别安装软件包,这使得隔离不同项目的依赖变得困难。
Conda 应运而生,它是一个开源的包管理系统和环境管理系统。它可以轻松地创建、保存、加载和切换不同的“环境”(environments)。每个环境都可以拥有自己独立的 Python 解释器和一套特定的软件包,而不会干扰其他环境或系统全局的设置。
使用 Conda,你可以:
- 创建隔离的环境: 为每个项目创建一个独立的环境,安装该项目所需的特定版本库。
- 解决依赖冲突: Conda 强大的依赖解析器能够找出兼容的软件包组合。
- 跨平台: Conda 不仅限于 Python,它还可以管理其他语言(如 R)的包,并且在 Windows、macOS 和 Linux 上都能使用。
- 方便分享: 可以轻松地导出和分享环境配置,让其他人在其机器上复现你的开发环境。
本文将详细指导你如何在 Ubuntu 操作系统上安装 Conda,并介绍一些基本的 Conda 使用方法,帮助你快速入门。
第一步:选择 Conda 分发版:Miniconda 还是 Anaconda?
Conda 有两个主要的分发版:
- Anaconda: 这是一个庞大的发行版,包含了 Conda 本身以及数百个常用的科学计算、数据科学和机器学习软件包(如 NumPy, SciPy, Pandas, Matplotlib, scikit-learn, Jupyter Notebook, Spyder 等)。它的优点是开箱即用,许多常用库已经预装,无需单独安装。缺点是安装包非常大(几个 GB),安装需要较长时间,并且占用大量的磁盘空间。
- Miniconda: 这是一个精简版的发行版,只包含 Conda 包管理器、Python 解释器以及少数核心软件包。它的优点是安装包非常小(几百 MB),安装速度快,占用磁盘空间少。缺点是除了基础环境外,其他所有需要的软件包都需要后续自己安装。
建议:
- 如果你是 Conda 新手,并且硬盘空间充足,希望快速上手并使用大量预装的科学计算工具,可以选择 Anaconda。
- 如果你的硬盘空间有限,或者你只需要 Conda 的环境管理功能,喜欢从零开始构建环境,只安装必需的软件包,那么 Miniconda 是更好的选择。
对于本教程,我们将以安装 Miniconda 为例进行演示,因为它的安装过程更快,并且对于理解 Conda 的核心功能(环境和包管理)已经足够。Anaconda 的安装过程与 Miniconda 非常相似,只是文件更大,安装时间更长。
第二步:下载 Conda 安装脚本
安装 Conda 通常是通过运行一个 Shell 脚本来完成。你需要从 Anaconda 的官方网站下载适合你 Ubuntu 系统架构(通常是 64 位)的安装脚本。
-
访问官方下载页面: 打开浏览器,访问 Anaconda Downloads 或 Miniconda Downloads。
-
确定版本和架构: 在下载页面找到适合 Linux 的版本。对于大多数现代 Ubuntu 系统,你需要下载 64-bit (x86_64) 版本。注意选择 Python 版本(通常推荐下载最新稳定版 Python 对应的安装包,例如 Python 3.x)。
-
获取下载链接: 在下载页面找到对应的
.sh
文件链接。你可以直接点击下载,也可以右键复制链接地址。 -
使用
wget
在终端下载: 打开 Ubuntu 的终端(Ctrl + Alt + T)。使用wget
命令下载安装脚本。将下面的链接替换为你刚刚复制的实际下载链接。bash
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh- 提示:
latest
在链接中通常指向最新的 Python 3 版本。如果你需要特定 Python 版本(例如 Python 3.9),链接可能会包含Miniconda3-py39_4.10.3-Linux-x86_64.sh
这样的字样(版本号可能不同)。始终从官方下载页面获取最新的链接。 - Anaconda 用户: 链接会是类似的格式,例如
https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh
(版本号随时间变化)。
执行命令后,终端会显示下载进度。下载完成后,
.sh
文件会保存在你当前所在的目录下(通常是你的主目录~
)。 - 提示:
第三步:验证安装脚本的完整性(重要!)
在运行下载的脚本之前,强烈建议验证其完整性,以确保文件在下载过程中没有损坏或被篡改。这可以通过计算文件的校验和(Checksum)并与官方提供的校验和进行比较来完成。常用的校验和算法是 SHA256。
-
查找官方校验和: 回到你下载脚本的 Conda/Miniconda 官方下载页面。通常会在下载链接附近提供 SHA256 校验和列表。找到你下载的文件的对应校验和。
-
计算本地文件的校验和: 在终端中,使用
sha256sum
命令计算你下载的.sh
文件的校验和。bash
sha256sum Miniconda3-latest-Linux-x86_64.sh将
Miniconda3-latest-Linux-x86_64.sh
替换为你下载的实际文件名。执行命令后,终端会输出一串由字母和数字组成的很长的字符串,这就是你本地文件的 SHA256 校验和。
-
比较校验和: 将终端输出的校验和与官方网站上提供的校验和进行仔细比较。两者必须完全一致。
- 如果校验和一致: 说明文件是完整且未被修改的,可以放心继续安装。
- 如果校验和不一致: 说明文件可能在下载过程中损坏,或者存在安全问题。请勿运行该脚本! 尝试重新下载文件,然后再次验证校验和。如果多次下载后校验和仍然不一致,考虑更换下载源或检查网络连接。
第四步:运行 Conda 安装脚本
校验和验证无误后,你就可以运行安装脚本了。在终端中,使用 bash
命令执行下载的 .sh
文件。
bash
bash Miniconda3-latest-Linux-x86_64.sh
将 Miniconda3-latest-Linux-x86_64.sh
替换为你下载的实际文件名。
安装脚本是交互式的,你需要按照提示进行操作。
-
按 Enter 查看许可协议: 脚本启动后,会显示许可协议。阅读协议(可以按 Enter 翻页,按
q
退出阅读)。“`
Welcome to Miniconda3!In order to continue the installation process, please review the license
agreement.
Please press ENTER to view the license agreement.
“`按 Enter 继续。
-
接受许可协议: 阅读完协议后,脚本会询问你是否接受许可条款。
Do you accept the license terms? [yes|no]
输入
yes
并按 Enter 确认接受。如果你输入no
,安装会中止。 -
确认安装位置: 脚本会提示你选择 Conda 的安装路径。默认路径通常是你的用户主目录下的一个隐藏文件夹(例如
~/miniconda3
或~/anaconda3
)。“`
Miniconda3 will now be installed into this location:
/home/your_username/miniconda3- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below
[/home/your_username/miniconda3] >>>
“`/home/your_username/miniconda3
中的your_username
是你的 Ubuntu 用户名。- 建议: 对于初学者,强烈建议使用默认安装路径。这通常不需要管理员权限(
sudo
),并且能保持 Conda 环境与系统环境的隔离。 - 如果需要修改路径: 输入你想要安装的完整路径(例如
/opt/miniconda3
或/usr/local/miniconda3
),但这可能需要管理员权限,并且配置起来更复杂。请确保你有写入该目录的权限。 - 确认: 如果接受默认路径,直接按 Enter。如果修改了路径,输入新路径后按 Enter。
-
等待安装文件: 确认安装路径后,安装程序会开始解压和安装文件到指定目录。这个过程可能需要几分钟。
PREFIX=/home/your_username/miniconda3
installing: python-3.9.7-h12debd9_1 ...
installing: _libgcc_mutex-0.1-conda_forge ...
...
installation finished. -
初始化 Conda (重要步骤): 安装文件完成后,脚本会询问是否初始化 Conda。这是一个非常重要的步骤。 初始化会将 Conda 的配置添加到你的 Shell 配置文件中(如
.bashrc
,.zshrc
等),使得你在新的终端会话中可以直接使用conda
命令。Do you wish the installer to initialize Miniconda3
by running conda init? [yes|no]强烈建议输入
yes
并按 Enter。 这会使 Conda 更容易使用。-
如果输入
yes
: 安装程序会修改你的 Shell 配置文件,并显示它修改了哪些文件。
“`
You have activated conda in your current shell.
In order to initialize your shell, run:
$ conda initno change /home/your_username/.bash_history
no change /home/your_username/.conda/environments.txt
no change /home/your_username/.config/conda/rc
modified /home/your_username/.bashrc==> For changes to take effect, close and re-open your current shell. <==
``
no
它会告诉你需要在新的终端会话中才能看到效果。
* **如果输入:** Conda 会被安装,但
conda命令不会自动添加到你的 PATH 环境变量中。你需要手动初始化或者每次使用 Conda 时手动激活。不推荐新手选择
no。如果你选择了
no,稍后可以通过运行
conda init` 命令手动进行初始化(前提是你先进入到 Conda 的安装目录下的 bin 目录中执行该命令,或者手动将其添加到 PATH)。
-
-
安装完成: 安装脚本执行完毕后,会显示安装完成的提示。
第五步:激活 Conda 环境 / 重启终端
如果上一步选择了初始化 Conda (yes
),你需要关闭当前的终端窗口,然后重新打开一个新的终端窗口。
这是因为 Conda 对 Shell 配置文件的修改(例如 .bashrc
)只会在新的 Shell 会话中加载生效。
当你打开一个新的终端窗口时,你会注意到命令行提示符前面可能会出现一个 (base)
字样。这表示你当前激活的是 Conda 的默认环境,称为 base
环境。
bash
(base) your_username@your_computer:~$
如果你没有看到 (base)
字样,或者 conda
命令仍然提示 command not found
,说明初始化可能没有成功,或者你的 Shell 使用了不同的配置文件(例如 zsh
可能使用 .zshrc
)。
- 手动加载配置: 在当前终端中尝试运行
source ~/.bashrc
(如果使用 Bash) 或source ~/.zshrc
(如果使用 Zsh) 来手动加载配置文件。然后尝试运行conda --version
。 - 手动初始化: 如果
source
无效,或者你之前选择了no
进行初始化,你需要在安装目录下手动运行初始化命令。假设你安装在默认路径~/miniconda3
,并且使用 Bash:
bash
# 进入安装目录的bin目录
cd ~/miniconda3/bin
# 手动运行conda init
./conda init bash
然后关闭并重新打开终端。对于其他 Shell,将bash
替换为你的 Shell 名称(如zsh
)。
第六步:验证 Conda 安装是否成功
安装并重启终端后,可以通过几个简单的命令来验证 Conda 是否安装成功并且可以正常工作。
-
检查 Conda 版本: 运行
conda --version
或conda -V
。bash
(base) your_username@your_computer:~$ conda --version
conda 23.9.0 # 版本号可能不同如果能正确显示 Conda 的版本号,说明 Conda 命令已经被添加到你的 PATH 中,并且可以执行。
-
检查 Conda 安装信息: 运行
conda info
。bash
(base) your_username@your_computer:~$ conda info这个命令会显示 Conda 的详细信息,包括:
*conda version
: Conda 版本
*conda-build version
: Conda Build 版本
*python version
: Conda 使用的 Python 版本 (在 base 环境中)
*user shell
: 你当前使用的 Shell 类型
*envs directories
: Conda 查找和存储环境的目录列表。默认会在你的主目录下的miniconda3/envs
或anaconda3/envs
中。
*package cache
: Conda 存储下载的包文件的缓存目录。检查
envs directories
是否指向你预期的环境存储位置,并且其他信息看起来正常。 -
列出基础环境中的包: 运行
conda list
。bash
(base) your_username@your_computer:~$ conda list这个命令会列出当前激活环境(默认为
base
环境)中已安装的所有软件包及其版本。对于 Miniconda 的base
环境,初始时只会包含 Conda、Python 以及一些必需的基础包。Anaconda 的base
环境则会包含非常多的预装包。如果这些命令都能正常运行并显示预期的信息,那么恭喜你,Conda 已经在你的 Ubuntu 系统上成功安装并配置好了!
第七步:基本 Conda 使用方法
安装好 Conda 之后,就可以开始利用它来管理你的环境和软件包了。以下是一些最常用的 Conda 命令:
1. 更新 Conda 自身
定期更新 Conda 是个好习惯,可以获得新功能和 bug 修复。
bash
(base) your_username@your_computer:~$ conda update conda
Conda 会检查可用的更新,并询问你是否继续。输入 y
并按 Enter 确认。
2. 创建新的 Conda 环境
为不同的项目创建不同的环境是使用 Conda 的核心目的。
bash
(base) your_username@your_computer:~$ conda create -n my_project_env python=3.9
create
: 创建环境的命令。-n my_project_env
: 指定新环境的名称为my_project_env
。你可以随意命名,但建议使用有意义的名称。python=3.9
: 在新环境中指定安装特定版本的 Python。如果不指定版本,Conda 会安装其认为兼容的最新版本。你也可以指定其他软件包,例如conda create -n my_ml_env python=3.8 numpy pandas scikit-learn
。
执行命令后,Conda 会解析依赖关系,列出将要安装的软件包,并询问你是否继续。输入 y
并按 Enter 确认。
3. 激活 Conda 环境
在开始在一个特定项目上工作时,你需要激活该项目对应的 Conda 环境。
bash
(base) your_username@your_computer:~$ conda activate my_project_env
activate
: 激活环境的命令。my_project_env
: 你要激活的环境的名称。
激活成功后,你的终端提示符会从 (base)
变为你激活的环境的名称。
bash
(my_project_env) your_username@your_computer:~$
现在,你在终端中运行的任何 Python 命令或安装的软件包都将在这个 my_project_env
环境中进行,不会影响其他环境。
4. 在环境中安装软件包
激活了环境后,就可以使用 conda install
命令安装你需要的软件包了。
bash
(my_project_env) your_username@your_computer:~$ conda install numpy pandas matplotlib
install
: 安装软件包的命令。numpy pandas matplotlib
: 你想要安装的软件包名称,多个包名之间用空格分隔。
Conda 会自动下载并安装这些软件包及其所有必要的依赖到当前激活的环境中。它也会处理好版本兼容性问题。
从特定通道安装: 有些软件包可能不在默认的 Conda 仓库中,或者你可能需要从社区维护的仓库(称为 “通道” Channels)获取。最常用的社区通道是 conda-forge
。
bash
(my_project_env) your_username@your_computer:~$ conda install -c conda-forge scikit-learn
-c conda-forge
: 指定从conda-forge
通道搜索并安装软件包。
5. 列出环境中的软件包
要查看当前激活的环境中安装了哪些软件包,使用 conda list
命令。
bash
(my_project_env) your_username@your_computer:~$ conda list
这将显示当前环境中所有已安装的软件包及其版本信息。
6. 列出所有 Conda 环境
要查看你创建的所有 Conda 环境列表,使用 conda env list
或 conda info --envs
。
“`bash
(my_project_env) your_username@your_computer:~$ conda env list
conda environments:
base /home/your_username/miniconda3
my_project_env * /home/your_username/miniconda3/envs/my_project_env
“`
- 输出中会列出环境名称和它们所在的路径。
- 名称旁边带有星号(
*
)的表示当前激活的环境。
7. 退出当前环境 (回到 base 环境)
当你完成一个项目的工作,或者想切换到另一个环境时,需要退出当前环境。
bash
(my_project_env) your_username@your_computer:~$ conda deactivate
执行后,你会回到上一个激活的环境,如果之前没有激活其他环境,就会回到 base
环境,提示符会变回 (base)
或你系统默认的提示符(取决于你的 Conda 配置)。
bash
(base) your_username@your_computer:~$
8. 删除 Conda 环境
如果一个项目不再需要,或者你只是想清理空间,可以删除不再需要的环境。
bash
(base) your_username@your_computer:~$ conda env remove -n my_project_env
env remove
: 删除环境的命令。-n my_project_env
: 指定要删除的环境的名称。
Conda 会要求你确认删除操作,输入 y
并按 Enter 确认。注意: 这个操作会删除该环境下安装的所有软件包,并且无法撤销。不要删除 base
环境,除非你确定要卸载 Conda。
9. 删除环境中的软件包
如果只需要从当前环境中删除某个或某几个软件包,使用 conda remove
命令。
bash
(my_project_env) your_username@your_computer:~$ conda remove numpy matplotlib
remove
: 删除软件包的命令。numpy matplotlib
: 要删除的软件包名称。
Conda 会计算依赖关系,并询问是否删除这些包以及它们的依赖(如果不再被其他包需要的话)。输入 y
并按 Enter 确认。
第八步:常见问题及故障排除
1. conda: command not found
原因:
* Conda 安装后没有正确初始化(即 .bashrc
或其他 Shell 配置文件没有被修改或未生效)。
* 安装后没有关闭并重新打开终端。
解决方法:
1. 重启终端: 最简单的方法是关闭当前终端窗口,然后重新打开一个新的。
2. 手动加载配置: 在当前的终端中运行 source ~/.bashrc
(对于 Bash 用户) 或 source ~/.zshrc
(对于 Zsh 用户) 来重新加载 Shell 配置文件。
3. 手动初始化: 如果上述方法无效,或者你之前选择了不自动初始化,你需要手动运行 conda init
。首先进入 Conda 安装目录的 bin
文件夹(例如 cd ~/miniconda3/bin
),然后运行 ./conda init <your_shell_name>
(例如 ./conda init bash
)。完成后,关闭并重新打开终端。
4. 检查配置文件: 打开你的 Shell 配置文件(例如 gedit ~/.bashrc
),查看文件末尾是否有 Conda 添加的配置块(通常包含 >>> conda initialize >>>
和 <<< conda initialize <<<
这样的标记)。如果缺失,可能安装或初始化过程有问题,考虑重新安装。
2. 终端提示符前没有 (base)
原因:
* Conda 配置了不自动激活 base
环境。
* Shell 配置没有正确加载。
解决方法:
* 手动激活: 尝试运行 conda activate base
。如果成功显示 (base)
,说明 Conda 本身是工作的,只是没有自动激活。
* 配置自动激活: 如果你想让 base
环境在每次打开终端时自动激活,可以修改 Conda 配置:
bash
conda config --set auto_activate_base true
然后关闭并重新打开终端。
* 检查 Shell 配置: 确保你的 Shell 配置文件(如 .bashrc
)被正确加载。
3. 安装或更新卡住/速度慢
原因:
* 网络连接问题。
* 默认的 Conda 镜像源速度慢。
解决方法:
* 更换镜像源: Conda 默认从官方源下载,国内用户可能会遇到速度问题。可以考虑使用国内的镜像源,例如清华大学 TUNA 镜像站。
bash
# 添加清华镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --set show_channel_urls yes
添加完成后,运行 conda clean -i
清除索引缓存,然后再次尝试安装或更新。
注意: 镜像源配置会写入到用户主目录下的 .condarc
文件中,你可以手动编辑该文件来管理镜像源。
4. 安装时出现权限错误
原因:
* 你尝试在没有写入权限的目录安装 Conda。
* 你使用 sudo
运行了 Conda 安装脚本。通常不应该使用 sudo
来安装 Conda 到你的用户主目录, 因为这会导致文件所有权问题。
解决方法:
* 安装到用户主目录: 推荐将 Conda 安装到你的用户主目录下的默认位置(如 ~/miniconda3
)。确保你在运行安装脚本时位于你的主目录下 (cd ~
),并且没有使用 sudo bash ...
命令。
* 修复权限: 如果不小心使用了 sudo
并且安装到了用户主目录,可能会导致某些文件归 root 所有。你可以使用 chown
命令来修复文件所有权:
bash
sudo chown -R your_username:your_username /home/your_username/miniconda3
将 your_username
和 miniconda3
替换为你的实际用户名和安装目录。
* 选择有权限的目录: 如果你确实需要安装到系统级目录(如 /opt
),确保你有该目录的写入权限,或者使用 sudo
(但要注意后续环境和包的管理可能需要 sudo
或进行额外的权限配置,这通常不推荐)。
第九步:卸载 Conda (如果需要)
如果你想完全移除 Conda,可以按照以下步骤进行:
-
删除 Conda 安装目录: 这是最主要的步骤,直接删除 Conda 的安装文件夹。
bash
# 假设安装在默认路径
rm -rf ~/miniconda3
# 或者 Anaconda 安装路径
# rm -rf ~/anaconda3
注意: 这个命令是递归删除且不可恢复,请务必确认目录路径正确。 -
移除 Conda 初始化配置: Conda 初始化时修改了你的 Shell 配置文件。你需要手动编辑这些文件,移除 Conda 添加的内容。
- 打开你的 Shell 配置文件,例如
gedit ~/.bashrc
(对于 Bash)。 - 找到包含
>>> conda initialize >>>
和<<< conda initialize <<<
标记的代码块。 - 删除整个代码块。
- 保存文件。
- 如果你使用了其他 Shell (如 Zsh),编辑对应的配置文件 (
~/.zshrc
)。 - 如果你不确定 Conda 修改了哪些文件,运行
conda init --dry-run
在卸载前查看它会修改哪些文件。
- 打开你的 Shell 配置文件,例如
-
清理 Conda 相关文件: Conda 可能会在你的主目录下创建
.conda
和.condarc
等隐藏文件或目录。可以一并删除。
bash
rm -rf ~/.conda ~/.condarc -
重启终端: 关闭并重新打开终端,确保 Conda 命令不再可用,且提示符恢复正常。
总结
通过遵循本教程的详细步骤,你应该已经成功地在 Ubuntu 系统上安装了 Conda(无论是 Miniconda 还是 Anaconda),并且掌握了创建、激活、管理和删除环境及软件包的基本操作。
Conda 是一个非常强大的工具,特别是在处理复杂的项目依赖时。学会有效地使用 Conda 环境将极大地提升你的开发效率和环境整洁度。
请记住,多加实践是掌握新工具的关键。尝试为你的不同项目创建独立的环境,在其中安装所需的库,体验 Conda 带来的便利。如果遇到问题,可以查阅 Conda 官方文档或在线搜索解决方案。
希望这篇详细的教程对你有所帮助!祝你在 Conda 的世界里探索愉快!