Conda 管理环境、包和通道。先确认命令作用于哪个环境,再区分“环境说明”“包规格列表”和“同平台精确包清单”。文件名都可以自取,但把包列表命名成 environment.yml 并不会使它变成 YAML。
本文基础命令按 Conda 25.5.1 的命令帮助核对。创建、删除、更新环境以及修改用户通道的示例是操作说明;本次整理没有对现有用户环境执行这些变更。
选择环境与解释器
跳转到“选择环境与解释器”conda --versionconda env listconda create --name tf python=3.11conda activate tfpython -c "import sys; print(sys.executable)"tf 只是环境名,不代表已经安装 TensorFlow。原记录选择了 python=3.7;这是旧项目版本示例,新项目应按依赖支持范围选择版本。激活后的解释器路径可以帮助判断安装包与运行程序是否落在同一环境。
若 shell 尚未支持 conda activate,对实际使用的 shell 执行初始化,例如 conda init bash 或 conda init powershell,然后重新打开终端。初始化会修改 shell 启动配置。原命令 conda init bash && source /root/.bashrc 只适合特定的 root/Bash 场景;普通用户不应照搬 /root,PowerShell 也不能直接运行 Bash 的 source。
不依赖当前激活状态时,可以使用 conda run --name tf python --version。同样,包的维护命令可以明确写出环境名:
conda install --name tf ipykernelconda update --name tf ipykernelconda remove --name tf ipykernelconda update --name base conda原来的 conda update package_name、conda remove package_name 中,package_name 是要替换的包名;不写 --name 时作用于当前环境。不要把创建、安装、卸载的示例当成需要连着执行的一组步骤。
导出与重建
跳转到“导出与重建”| 目的 | 导出命令 | 对应入口与限制 |
|---|---|---|
| 保存环境 YAML,包括已记录的包信息 | conda env export --name tf --file environment.yml | 用 conda env create --file environment.yml;完整依赖和构建标识可能受平台限制 |
| 表达显式安装意图 | conda env export --name tf --from-history --file environment-history.yml | 用 YAML 创建环境;依赖会重新求解,跨平台可用性仍取决于包 |
| 保存包规格列表 | conda list --name tf --export > conda-packages.txt | 核对并保留可由 Conda 获取的规格后,使用 conda create --name tf-copy --file conda-packages.txt;混合 pip 环境有下述限制 |
| 保存同平台精确包 URL | conda list --name tf --explicit > explicit.txt | conda create --name tf-copy --file explicit.txt;适合同操作系统/架构,并依赖包仍可获取 |
包规格列表不是 YAML,也不是 pip requirements。Conda 25.5.1 的 --export 路径可能包含 pip 安装的记录,例如 包名=版本=pypi_0;这不表示 Conda 通道中存在对应构建,直接交给 conda create --file 可能无法求解。混合环境应区分 Conda 和 pip 依赖,分别记录与恢复;使用环境 YAML 时也要核对其中的 pip: 部分。这项限制依据该版本的导出实现与合成包记录验证,不能推断其他版本行为相同。
原记录的 myenv_packages.xt 可改成更清楚的 .txt。另一个 conda list --export > environment.yml 应改为包列表文件名,避免随后误用 YAML 创建命令。
--from-history 用于保留显式请求,不能据此断言所有 pip 安装内容和运行时外部依赖都已完整记录。分享前应检查导出文件中的包、通道和本机 prefix 路径。导出到已有文件会覆盖它。
较新的 Conda 提供 conda export 及多种格式;本文不假设旧版本拥有同样的子命令和插件。使用前查看本机 conda export --help,版本差异见 环境导出说明;恢复方式见 环境管理文档。
通道与缓存
跳转到“通道与缓存”conda config --show channels channel_priorityconda config --set channel_priority strictstrict 改变求解器对通道优先级的处理,不是“更换默认通道”。新增和删除通道是另外的操作。原记录使用过 conda config --remove channels defaults 和 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main;这里保留其用途,但单独添加一个 pkgs/main 镜像并不代表所有通道已完整映射。应根据镜像站的 Anaconda 使用说明 与实际包来源统一配置,避免混用不匹配的通道方案。
清理缓存前先查看计划:
conda clean --all --dry-run确认后才使用 conda clean --all;原记录中的 -y 会跳过确认。缓存清理不会等同于删除环境。--all 与强制移除整个包缓存也不是同一个选项;若环境用符号链接引用缓存,清理前尤其要确认链接关系。具体类别以本机 conda clean --help 为准。
在 Jupyter 中选择环境
跳转到“在 Jupyter 中选择环境”在目标环境安装 ipykernel 后,用该环境的 Python 注册内核:
conda activate tfpython -m pip install ipykernelpython -m ipykernel install --user --name tf --display-name "Python (tf)"前面的 Conda 安装与这里的 pip 安装是两种选择,不必重复安装。原记录的 ipython kernel install --user --name=tf 用意也是注册内核;使用 python -m ipykernel 更明确地绑定当前解释器。之后在已有 JupyterLab/Notebook 中选择 Python (tf);注册内核本身不等于安装 JupyterLab。
内核名称用于识别记录,显示名称用于界面。同名重复安装会覆盖相应内核说明。详情见 IPython 内核安装。
删除环境
跳转到“删除环境”先退出正在使用的环境,再选用一种删除命令:
conda deactivateconda env remove --name tfconda env listconda remove --name tf --all 是另一种完整删除方式,不需要再执行第二遍。删除前确认环境名;Notebook 的用户内核记录可能仍然存在,需要在 Jupyter 的 kernelspec 管理中单独清理对应记录。
相关工具:pip 的环境与配置、IPython 图片显示。