在开发机中使用 Conda
本文主要介绍如何在开发机中使用镜像自带的 Conda 环境。
镜像自带 vs 自行安装
智算云平台预置了基于 Ubuntu、CentOS 的多种基础镜像和第三方镜像,绝大部分已自带 Miniconda,一般在 /usr/local/ 下的目录。
如果使用预置镜像,不妨使用镜像自带 Miniconda,免去自行下载安装的麻烦。镜像自带 Miniconda 一般在 /usr/local 目录下。
以下内容无特殊说明,均为镜像自带 Miniconda,使用 root 用户。
Conda 环境初始化指南
在云平台的开发机中,为了让 Conda 在 Web 终端和 SSH 远程连接中都能正常使用,您需要进行初始化配置。
不同的基础镜像需要不同的初始化策略,选错策略可能会导致环境冲突或命令找不到(如 nvcc: command not found)。请根据您创建实例时选择的镜像类型,选择下方对应的配置方案。
快速选择
- 如果您使用的是 NGC PyTorch / NVIDIA CUDA 镜像,请使用 方案 A(安全轻量初始化)。
- 如果您使用的是纯净 Ubuntu 镜像(已预装 Miniconda),可以使用 方案 B(全局强制初始化)。
方案 A 安全轻量初始化
NGC 等镜像已经针对 NVIDIA 硬件进行了深度优化。直接使用 conda init 会破坏原有的环境变量,导致系统级应用变慢或报错。
操作步骤
在个人的配置文件中向当前终端注入 conda 命令,这不会影响机器上的其他用户或系统进程:
echo "source /usr/local/miniconda3/etc/profile.d/conda.sh" >> ~/.bashrc验证: 断开并重新连接 SSH,输入 conda --version。您现在可以按需使用 conda activate <env_name> 了。
方案 B 全局强制初始化
如果您使用的是一个基础 Ubuntu 镜像,并且希望一登录机器就默认进入 Conda 环境,可以使用原生的强制初始化。
操作步骤
运行系统级初始化:
bashconda init --system(强烈建议) 关闭 base 环境的自动激活。这可以避免每次打开终端时的卡顿,并减少与其他工具的冲突:
shellconda config --system --set auto_activate_base false
验证:重新连接 SSH,您将可以使用所有 Conda 命令。
自动化脚本与 CI/CD 提示
如果您在写自动化脚本(例如通过 SSH 远程下发单条命令),不要依赖上述的环境初始化。请直接使用 conda run,这是最稳定、不会报错的方式:
# 错误示范(脚本可能会找不到 conda 或所需环境)
conda activate my_env && python train.py
# 正确示范(绝对稳定)
conda run -n my_env python train.py常见问题
修改默认 Conda 源为清华镜像源
由于国内网络问题,可能无法访问 Conda 自带源,或访问速度极慢。因此,建议使用国内镜像源,如清华镜像源。
下面示例使用 cat 命令直接追加写入了 ~/.condarc,请注意勿重复添加。
# 添加清华镜像源。
cat << EOF >> ~/.condarc
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
deepmodeling: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/
nvidia: https://mirrors.sustech.edu.cn/anaconda-extra/cloud
EOF然后清除相关缓存:
conda clean -i
conda clean -p
conda clean -a无法激活 Conda 环境
从 Web Terminal 登录开发机,使用 which conda 验证已安装 Miniconda,已有 base 环境,但直接运行 conda activate base 会报错(激活其他环境也会报错),提示需要先运行 conda init。

conda init 命令用于初始化 Conda,修改仅会被持久化到用户级 .bashrc 中,可能导致 Web Terminal 和 SSH 远程登录行为不一致。
警告
遇到此报错不应当直接运行 conda init 或 conda init --system,这可能导致后续环境配置紊乱。请参考上文中的方案 A:安全轻量初始化为当前环境进行安全配置。
非 root 用户的文件路径权限问题
提示
AIStudio 开发机已变更为默认使用 root 账号登录。部分旧版开发机仍默认使用非 root 账号,重启后可自动更新。不需要使用以下方案解决非 root 用户权限问题。
非 root 用户使用镜像自带 Miniconda 可能会遇到文件读写权限问题。
镜像自带 Miniconda 一般在 /usr/local 目录。可通过以下命令查看 Miniconda 使用的路径:
conda info开发机 Web Terminal 环境特殊,暂时使用 conda create 会遇到文件权限错误,无法简单通过 sudo 提升至 root 权限解决问题。如果对从 Web Terminal 使用 Conda 命令有强需求,请参考下文推荐方案一/方案二。
方案一 修改 pkgs 路径
在 Web Terminal 执行 conda create 时,默认会以 /usr/local 下的子目录作为 pkgs 路径,遇到权限不足的问题时,会直接报错。
因此,可以修改 conda 配置,将 pkgs 路径修改为 ~/.conda/pkgs,这样就可以避免文件权限问题。
# 创建 pkgs 目录
mkdir -p ~/.conda/pkgs
# 修改 .condarc 配置
conda config --add pkgs_dirs ~/.conda/pkgs
# 检查 conda 配置是否成功,输出 pkgs 路径如果只有 1 个,则说明配置成功
conda config --show-sources配置完毕后,conda create 命令即可正常执行。
方案二 自行安装 Miniconda
您也可以放弃使用镜像自带 Miniconda,自行安装理想的 Conda 环境。自行安装的 Conda 默认在用户目录下,一般不会遇到权限问题。
安装 Miniconda
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh初始化 Miniconda
~/miniconda3/bin/conda init bash
~/miniconda3/bin/conda init zsh非 root 用户无法创建 Conda 环境
提示
AIStudio 开发机已变更为默认使用 root 账号登录。部分旧版开发机仍默认使用非 root 账号,重启后可自动更新。不需要使用以下方案解决非 root 用户权限问题。
从开发机的 Web Terminal 登录,使用 conda create 命令创建 Conda 环境,会直接报错。这是因为开发机的 Web Terminal 环境特殊,暂时无法直接支持使用 conda create。
遇到这类错误,请参考上文 非 root 用户的文件路径权限问题 部分的解决方案。
Ubuntu 报错示例:
demo@is-c7w2uhk76efvlcfa-devmachine-0:~$ conda create -n fromwebterm python==3.12.4
Channels:
- defaults
Platform: linux-64
Collecting package metadata (repodata.json): failed
NotWritableError: The current user does not have write permissions to a required path.
path: /usr/local/miniconda3/pkgs/cache/47929eba.json
uid: 30508
gid: 0
If you feel that permissions on this path are set incorrectly, you can manually
change them by executing
$ sudo chown 30508:0 /usr/local/miniconda3/pkgs/cache/47929eba.json
In general, it's not advisable to use 'sudo conda'.
demo@is-c7w2uhk76efvlcfa-devmachine-0:~$CentOS 报错示例:
[zhaoyinghao@is-c7wqsja2wznj73pe-devmachine-0 ~]$ conda create -name web python==3.12.4
Collecting package metadata (current_repodata.json): failed
# >>>>>>>>>>>>>>>>>>>>>> ERROR REPORT <<<<<<<<<<<<<<<<<<<<<<
Traceback (most recent call last):
File "/usr/local/lib/miniconda3/lib/python3.9/site-packages/conda/exception_handler.py", line 16, in __call__
return func(*args, **kwargs)
File "/usr/local/lib/miniconda3/lib/python3.9/site-packages/conda/cli/main.py", line 84, in main_subshell
exit_code = do_call(args, p)
File "/usr/local/lib/miniconda3/lib/python3.9/site-packages/conda/cli/conda_argparse.py", line 126, in do_call
return getattr(module, func_name)(args, parser)
File "/usr/local/lib/miniconda3/lib/python3.9/site-packages/conda/notices/core.py", line 123, in wrapper
return func(*args, **kwargs)
File "/usr/local/lib/miniconda3/lib/python3.9/site-packages/conda/cli/main_create.py", line 46, in execute
install(args, parser, "create")
File "/usr/local/lib/miniconda3/lib/python3.9/site-packages/conda/cli/install.py", line 309, in install
unlink_link_transaction = solver.solve_for_transaction(
File "/usr/local/lib/miniconda3/lib/python3.9/site-packages/conda/core/solve.py", line 153, in solve_for_transaction
unlink_precs, link_precs = self.solve_for_diff(
File "/usr/local/lib/miniconda3/lib/python3.9/site-packages/conda/core/solve.py", line 214, in solve_for_diff
final_precs = self.solve_final_state(
File "/usr/local/lib/miniconda3/lib/python3.9/site-packages/conda/core/solve.py", line 357, in solve_final_state
ssc = self._collect_all_metadata(ssc)
File "/usr/local/lib/miniconda3/lib/python3.9/site-packages/conda/common/io.py", line 83, in decorated
return f(*args, **kwds)
File "/usr/local/lib/miniconda3/lib/python3.9/site-packages/conda/core/solve.py", line 571, in _collect_all_metadata
index, r = self._prepare(prepared_specs)
File "/usr/local/lib/miniconda3/lib/python3.9/site-packages/conda/core/solve.py", line 1285, in _prepare
reduced_index = get_reduced_index(
File "/usr/local/lib/miniconda3/lib/python3.9/site-packages/conda/core/index.py", line 286, in get_reduced_index
new_records = SubdirData.query_all(
File "/usr/local/lib/miniconda3/lib/python3.9/site-packages/conda/core/subdir_data.py", line 123, in query_all
create_cache_dir()
File "/usr/local/lib/miniconda3/lib/python3.9/site-packages/conda/gateways/repodata/__init__.py", line 994, in create_cache_dir
mkdir_p_sudo_safe(cache_dir)
File "/usr/local/lib/miniconda3/lib/python3.9/site-packages/conda/gateways/disk/__init__.py", line 87, in mkdir_p_sudo_safe
os.mkdir(path)
PermissionError: [Errno 13] Permission denied: '/usr/local/lib/miniconda3/pkgs/cache'
`$ /usr/local/lib/miniconda3/bin/conda create -name web python==3.12.4`
environment variables:
CIO_TEST=<not set>
CONDA_DIR=/usr/local/lib/miniconda3
CONDA_EXE=/usr/local/lib/miniconda3/bin/conda
CONDA_PYTHON_EXE=/usr/local/lib/miniconda3/bin/python
CONDA_ROOT=/usr/local/lib/miniconda3
CONDA_SHLVL=0
CURL_CA_BUNDLE=<not set>
LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/gcc/lib64:/usr/local/gcc/lib::/usr/lo
cal/lib
LD_PRELOAD=<not set>
LIBRARY_PATH=/usr/local/cuda/lib64/stubs
PATH=/usr/local/lib/miniconda3/condabin:/usr/local/cuda/bin:/usr/local/gcc/
bin:/usr/local/lib/miniconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/
sbin:/usr/bin:/sbin:/bin:/home/zhaoyinghao/.local/bin:/home/zhaoyingha
o/bin
REQUESTS_CA_BUNDLE=<not set>
SSL_CERT_FILE=<not set>
active environment : None
shell level : 0
user config file : /home/zhaoyinghao/.condarc
populated config files :
conda version : 23.5.0
conda-build version : not installed
python version : 3.9.12.final.0
virtual packages : __archspec=1=x86_64
__cuda=12.2=0
__glibc=2.17=0
__linux=5.15.0=0
__unix=0=0
base environment : /usr/local/lib/miniconda3 (read only)
conda av data dir : /usr/local/lib/miniconda3/etc/conda
conda av metadata url : None
channel URLs : https://repo.anaconda.com/pkgs/main/linux-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/r/linux-64
https://repo.anaconda.com/pkgs/r/noarch
package cache : /usr/local/lib/miniconda3/pkgs
/home/zhaoyinghao/.conda/pkgs
envs directories : /home/zhaoyinghao/.conda/envs
/usr/local/lib/miniconda3/envs
platform : linux-64
user-agent : conda/23.5.0 requests/2.27.1 CPython/3.9.12 Linux/5.15.0-113-generic centos/7.9.2009 glibc/2.17
UID:GID : 30509:0
netrc file : None
offline mode : False
An unexpected error has occurred. Conda has prepared the above report.
If submitted, this report will be used by core maintainers to improve
future releases of conda.
Would you like conda to send this report to the core maintainers? [y/N]: n
No report sent. To permanently opt-out, use
$ conda config --set report_errors false
[zhaoyinghao@is-c7wqsja2wznj73pe-devmachine-0 ~]$