Anaconda虚拟环境安装不同版本cudatoolkit/cuDNN会破坏现有配置吗?
解答你的Anaconda虚拟环境TensorFlow-GPU配置疑问
别担心,你辛苦搭建的系统级CUDA 9.0和cuDNN 7.0.3配置不会被破坏,下面详细解释你的问题:
1. Conda安装的cudatoolkit/cuDNN会不会破坏现有配置?
不会!Anaconda虚拟环境的核心特性就是环境隔离:
- Conda安装的cudatoolkit和cuDNN会被放在你当前虚拟环境的专属目录下(比如
~/anaconda3/envs/your_env_name/lib这类路径),完全独立于系统级的/usr/local/cuda路径。 - 系统的CUDA和cuDNN的环境变量(
PATH、LD_LIBRARY_PATH等)只会在你激活虚拟环境前生效,激活后虚拟环境的变量会优先覆盖,但退出环境后一切恢复原样。
2. 这些安装是否仅局限于虚拟环境内?
是的,完全局限在当前虚拟环境中。不同的Anaconda环境可以拥有各自独立的cudatoolkit、cuDNN甚至Python版本,互相之间不会产生干扰。比如你现在的另一个环境可以用系统的CUDA,新环境用conda安装的其他版本,两者完全并行运行。
3. 为什么另一个环境没要求安装这些组件?
这通常有两种原因:
- 另一个环境安装的TensorFlow-GPU版本刚好和你系统的CUDA 9.0、cuDNN 7.0.3兼容,conda在解析依赖时检测到系统已存在符合要求的库,就没有强制在环境内安装;
- 你在安装那个环境的TensorFlow时,可能使用了
--no-deps参数跳过了依赖安装,或者手动指定了依赖来源为系统库。
给你的建议
如果你想保留系统级配置的使用,有两种选择:
- 方案一:让新环境使用系统CUDA
安装TensorFlow-GPU时跳过依赖安装:
然后确保激活虚拟环境后,环境变量指向系统CUDA路径(可以在环境的conda install tensorflow-gpu --no-depsactivate.d脚本里设置),但要注意TensorFlow版本必须和CUDA 9.0兼容(比如TensorFlow 1.12.x到1.14.x版本适配CUDA 9.0)。 - 方案二:直接用conda安装环境内的组件
这其实是更省心的方式,conda会自动匹配TensorFlow对应的cudatoolkit和cuDNN版本,而且完全隔离,不会影响你的系统配置和其他环境,后续切换环境也不需要调整变量。
内容的提问来源于stack exchange,提问作者WNavidson1
相关产品推荐
相关产品推荐

