告别环境焦虑用 Conda 在 Ubuntu 上轻松管理 JAX (CPU/GPU) 和 TensorFlow 的多个版本深度学习框架的版本冲突问题一直是开发者心中的痛。你是否经历过这样的场景昨天还能正常运行的 TensorFlow 项目今天更新了 CUDA 驱动后就报错或者同事分享的 JAX 代码在你的机器上就是无法执行这些问题的根源往往在于系统级的环境污染和依赖混乱。Conda 作为 Python 生态中最强大的环境管理工具能够为每个项目创建完全隔离的虚拟环境从根本上解决依赖地狱问题。本文将带你用 Conda 在 Ubuntu 系统上构建多个独立环境分别运行 JAX 的 CPU/GPU 版本、TensorFlow 2.x 以及 TensorRT无需担心版本冲突真正做到一键切换。1. 环境准备Conda 基础配置1.1 安装 MinicondaMiniconda 是 Anaconda 的轻量版只包含 Conda 和 Python 等核心组件。在 Ubuntu 上安装wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh安装完成后需要重新加载 shell 配置source ~/.bashrc验证安装conda --version1.2 配置 Conda 镜像源为加速国内下载建议配置清华镜像源conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ conda config --set show_channel_urls yes提示conda-forge 频道包含大量预编译的科学计算包建议始终启用2. 创建 JAX 专用环境2.1 JAX CPU 版本环境创建名为jax-cpu的环境conda create -n jax-cpu python3.9 conda activate jax-cpu安装 JAX CPU 版本conda install -c conda-forge jax jaxlib验证安装import jax print(jax.devices()) # 应显示 CPU 设备2.2 JAX GPU 版本环境创建名为jax-gpu的新环境conda create -n jax-gpu python3.9 conda activate jax-gpu通过 conda-forge 安装带 CUDA 支持的 JAXconda install -c conda-forge jax jaxlib cuda-nvcc cuda-cudart检查 GPU 支持import jax print(jax.devices()) # 应显示 GPU 设备注意Conda 会自动处理 CUDA 和 cuDNN 的版本匹配无需手动安装系统级驱动3. 管理 TensorFlow 多版本环境3.1 TensorFlow 2.12 环境创建并激活环境conda create -n tf-2.12 python3.9 conda activate tf-2.12安装 TensorFlow GPU 版本conda install -c conda-forge tensorflow2.12 cudatoolkit11.8 cudnn8.6验证安装import tensorflow as tf print(tf.config.list_physical_devices(GPU))3.2 TensorFlow 与 TensorRT 集成在已有 TensorFlow 环境中添加 TensorRT 支持conda install -c nvidia tensorrt配置环境变量建议写入~/.bashrcexport LD_LIBRARY_PATH$LD_LIBRARY_PATH:$CONDA_PREFIX/lib测试 TensorRT 加速from tensorflow.python.compiler.tensorrt import trt_convert as trt # 构建转换器示例 converter trt.TrtGraphConverterV2(input_saved_model_dirsaved_model) converter.convert() converter.save(optimized_model)4. 环境管理高级技巧4.1 环境克隆与共享克隆现有环境适用于团队协作conda create --name tf-2.12-clone --clone tf-2.12导出环境配置生成environment.yml文件conda env export -n tf-2.12 tf-2.12.yml他人可通过该文件复现相同环境conda env create -f tf-2.12.yml4.2 环境清理与优化查看所有环境conda env list删除不再需要的环境conda remove --name old-env --all清理缓存包conda clean --all4.3 环境快速切换方案使用conda-auto-env实现目录自动切换环境conda install -c conda-forge conda-auto-env echo conda_auto_env ~/.bashrc然后在项目目录创建.autoenv文件内容为conda activate my-project-env5. 常见问题解决方案5.1 CUDA 版本冲突处理当出现 CUDA 相关错误时检查环境中的 CUDA 组件conda list | grep cuda典型输出示例cudatoolkit 11.8.0 h37601d7_0 conda-forge cudnn 8.6.0.163 cuda11.8_0 conda-forge5.2 环境启动失败修复如果环境无法激活尝试重建环境索引conda index ~/miniconda3/pkgs5.3 混合使用 Conda 和 Pip当某些包只能通过 pip 安装时建议流程先通过 conda 安装尽可能多的依赖最后使用 pip 安装剩余包记录所有 pip 安装的包pip freeze requirements.txt重要避免在 conda 环境中直接使用pip install安装本应通过 conda 安装的包6. 性能对比与最佳实践6.1 Conda 与 Pip 安装对比特性Conda 安装Pip 安装依赖解决跨语言自动解决仅 Python 包CUDA 管理自动匹配版本需手动系统安装环境隔离完全隔离依赖系统环境磁盘占用较大包含依赖较小适用场景复杂科学计算环境简单 Python 项目6.2 环境配置推荐方案针对不同使用场景的建议个人开发每个项目独立环境使用 conda-forge 频道环境名反映主要框架和版本如tf2.12-jax0.4团队协作共享environment.yml统一 CUDA 版本建议使用相同 Linux 发行版生产部署使用 Docker 封装 Conda 环境固定所有包版本禁用环境自动更新conda install --freeze-installed package_name # 禁止自动升级依赖6.3 环境备份策略建议的备份方案定期导出环境配置conda env export --no-builds -n my-env my-env.yml备份 Conda 包缓存tar -czvf conda_pkgs_backup.tar.gz ~/miniconda3/pkgs/使用 conda-pack 创建可移植环境conda install -c conda-forge conda-pack conda pack -n my-env -o my-env.tar.gz