使用
在 Conda 环境中编译安装 C++ 项目
编译时记得加这两个参数:
cmake .. -DCMAKE_INSTALL_PREFIX="$CONDA_PREFIX" -DCMAKE_PREFIX_PATH="$CONDA_PREFIX"则 cmake 在查找依赖时会优先从当前激活的 conda 环境中找;编译好后安装到当前 conda 环境,供其他项目链接或调用中。
🌟 为什么优先使用 conda-forge
conda-forge 的优势
-
社区驱动:
- 开源社区维护,无商业许可限制
- 更新更及时,包版本更新
- 包质量更高,依赖关系更完善
-
更广泛的包支持:
- 包含更多科学计算和数据科学包
- 许多包只在 conda-forge 中可用
- 编译选项更优化
-
避免法律问题:
- 不受 Anaconda 商业许可限制
- 适合商业使用
- 无警告信息干扰
更新 conda 环境
在开发过程中,你可能需要在 conda 环境和 envs/environment.yaml 文件之间保持同步。以下是两种常见场景的处理方法:
场景 1:将新安装的包同步到 environment.yaml
当你使用 conda install 或 pip install 安装了新包后,需要将这些变更同步到 envs/environment.yaml 文件中:
方法一:导出完整环境(推荐)
# 激活 umi 环境
conda activate umi
# 导出当前环境(包含依赖)到 environment.yaml, 用于精确复现
conda env export > envs/environment.yaml
# 仅导出手动安装的包(不包括依赖)
conda env export --from-history > > envs/environment.yaml方法二:手动更新 environment.yaml
# 查看已安装的包
conda list
# 手动编辑 envs/environment.yaml,添加新安装的包
# 格式示例:
# dependencies:
# - numpy=1.24.0
# - requests=2.28.0
# - pip:
# - some-pip-package==1.0.0注意事项:
- 方法一会导出所有包(包括依赖),文件较大但更准确
- 方法二需要手动维护,但文件更简洁,只包含明确需要的包
- 建议在提交代码前清理
environment.yaml,只保留项目必需的包
场景 2:将 environment.yaml 的更改同步到 conda 环境
当你更新了 envs/environment.yaml 文件后,需要将变更应用到现有的 conda 环境:
更新现有环境
# 激活 umi 环境
conda activate umi
# 根据 environment.yaml 更新环境
conda env update -f envs/environment.yaml --prune重新创建环境(彻底更新)
# 删除现有环境
conda env remove -n umi
# 基于 environment.yaml 重新创建环境
conda env create -f envs/environment.yaml参数说明:
--prune:删除 environment.yaml 中未列出的包-f:指定环境文件路径
常用 conda/mamba 命令速查
# 环境管理
mamba create -n myenv python=3.9 # 创建环境
mamba create -n myenv --clone base # 克隆环境
conda activate myenv # 激活环境(mamba 一般使用 conda 来激活)
conda deactivate # 退出环境
mamba env list # 列出所有环境
mamba remove -n myenv # 删除环境
mamba env export > environment.yml # 导出完整环境
mamba env export --from-history > environment-min.yml # 仅导出显式安装的包
mamba env create -f environment.yml # 从文件创建环境
# 环境更新
mamba update -n myenv --all # 更新指定环境中所有包
mamba env update -n myenv -f environment.yml # 按文件更新环境
mamba env update -n myenv -f environment.yml --prune # 同步并移除文件中未列出的包
mamba list --revisions # 查看当前环境的修订历史
mamba install --revision 3 # 回滚到修订版本 3
# 包管理
mamba install numpy pandas # 安装包
mamba install -c conda-forge scipy # 从指定频道安装
mamba update numpy # 更新单个包
mamba remove numpy # 卸载包
mamba list # 列出已安装包
mamba search numpy # 搜索包
mamba info numpy # 查看包信息(版本、构建、依赖等)
# 依赖与关系查询(repoquery)
mamba repoquery depends numpy # 查看 numpy 的依赖
mamba repoquery depends --tree numpy # 依赖树视图
mamba repoquery whoneeds numpy # 哪些包依赖 numpy(反向依赖)
mamba repoquery depends --installed numpy # 在当前已安装环境里看依赖
mamba repoquery whoneeds --installed numpy # 在当前已安装环境里看反向依赖
# 频道管理
mamba config --add channels conda-forge # 添加频道
mamba config --show channels # 查看频道列表
mamba config --remove channels conda-forge # 移除频道
mamba config --set channel_priority strict # 设置频道优先级为严格
# 缓存和清理
mamba clean --all # 清理索引、包、tar 等所有缓存
mamba clean -p # 清理包缓存
mamba clean -t # 清理 tar 包