Conda环境已安装cuda-cudart仍报错import tensorflow找不到libcudart.so.11.0
核心原因
你的Conda安装本身没有异常,该问题是两个适配问题共同导致的:
- NVIDIA官方频道发布的CUDA套件包,默认不会主动将
$CONDA_PREFIX/lib路径添加到LD_LIBRARY_PATH环境变量中,和conda-forge源过去的cudatoolkit包逻辑不同。只有完整触发Conda的激活逻辑、且包本身自带对应变量配置脚本时才会自动添加库路径,NVIDIA官方CUDA包目前没有内置该配置。 - PyPI源的TensorFlow没有适配Conda环境的库路径逻辑,只会搜索系统默认路径和
LD_LIBRARY_PATH内的路径;而Conda源的TensorFlow会内置Conda路径适配补丁,不需要手动配置库路径。
另外如果你没有执行过conda init对应shell(比如bash/zsh)、或者使用source activate而非conda activate激活环境,也只会修改PATH变量,不会加载完整的环境变量配置。
永久解决方案
你可以根据自己的需求选择任意一种方案:
方案1:给Conda环境添加激活/退出脚本
这是对你现有配置改动最小的方案,只会在激活对应环境时修改LD_LIBRARY_PATH,退出后自动恢复:
- 激活目标环境后执行以下命令创建激活脚本:
mkdir -p $CONDA_PREFIX/etc/conda/activate.d cat > $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh << 'EOF' export OLD_LD_LIBRARY_PATH=${LD_LIBRARY_PATH:-} export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH EOF
- 再创建对应的退出恢复脚本:
mkdir -p $CONDA_PREFIX/etc/conda/deactivate.d cat > $CONDA_PREFIX/etc/conda/deactivate.d/env_vars.sh << 'EOF' export LD_LIBRARY_PATH=${OLD_LD_LIBRARY_PATH:-} unset OLD_LD_LIBRARY_PATH EOF
方案2:替换为Conda源的TensorFlow
卸载PyPI版本的TensorFlow,安装Conda源适配后的版本,无需手动修改环境变量:
pip uninstall -y tensorflow tensorflow-estimator tensorflow-hub tensorflow-io-gcs-filesystem conda install -c conda-forge tensorflow==2.7.0
方案3:使用conda run执行代码
不需要修改任何配置,运行代码时用conda run命令自动加载完整环境变量:
conda run -n env-name python 你的脚本路径.py
内容的提问来源于stack exchange,提问作者Shriraj Hegde
相关产品推荐
相关产品推荐

