![我必须将 PATH 添加到 /etc/environment 但是它会损坏我的机器 - 为什么?](https://linux22.com/image/1017157/%E6%88%91%E5%BF%85%E9%A1%BB%E5%B0%86%20PATH%20%E6%B7%BB%E5%8A%A0%E5%88%B0%20%2Fetc%2Fenvironment%20%E4%BD%86%E6%98%AF%E5%AE%83%E4%BC%9A%E6%8D%9F%E5%9D%8F%E6%88%91%E7%9A%84%E6%9C%BA%E5%99%A8%20-%20%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我正在尝试在 Ubuntu 18.04 上使用 tensorflow深度学习 AMI从 Amazon 下载,其中已安装所有 CUDA 版本。但是,由于一些 $PATH 问题,让 tensorflow 1.X 与 GPU 配合使用并不容易。如果不采取任何措施,使用 TF 1.X 时会发生此运行时错误:
2020-03-25 16:31:58.162200: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'libcudart.so.10.0'; dlerror: libcudart.so.10.0: cannot open shared object file: No such file or directory
但它在 TF 2.X 上可以正常工作
所以在阅读了一些帖子之后喜欢这个或这,我决定将这些命令添加到 1) 中~/.bashrc
,然后再添加到 2) 中~/.profile
:
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:/usr/local/cuda-10.0/extras/CUPTI/lib64:$LD_LIBRARY_PATH"
export PATH="/usr/local/cuda-10.0/bin:$PATH"
但没有效果(我确实重新启动了机器或使用了source ~/.bashrc
命令)。
但是,如果我将这些变量添加到/etc/environment
TensorFlow,它就会找到这些变量并完美运行!问题是,它完全破坏了机器,因为我认为它会覆盖所有其他$PATH
变量LD_LIBRARY_PATH
。我的理论是,由于/etc/environment
该变量具有最高优先级,LD_LIBRARY_PATH="/usr/local/cuda/lib64:/usr/local/cuda-10.0/extras/CUPTI/lib64
因此它正是 TF 1.X 所需要的。
问题:
我该如何正确添加这个变量,以便 TF 1.X 找到它的 CUDA-10.0 文件并且 TF 2.X 找到它的更高 CUDA 版本?
答案1
我自己的问题的答案就在这里:为 CUDA 设置 LD_LIBRARY_PATH和它的这个帖子但不要忘记sudo ldconfig