ImportError: libcuda.so.1: cannot open shared object file: No such file or directory
Fixes libcuda.so.1 import failure by installing the NVIDIA driver or switching to tensorflow-cpu. Use when the traceback names libcuda.so.1. Not for missing toolkit libraries like libcudart.
TL;DR: Install the NVIDIA driver (libcuda.so.1 ships with the driver, not the CUDA toolkit) or run CPU-only TensorFlow. This error means the machine has no NVIDIA driver, so the GPU build of TF cannot load. If you do not need the GPU, pip install tensorflow-cpu sidesteps the whole thing.
The error:
ImportError: libcuda.so.1: cannot open shared object file: No such file or directoryFix
Run
nvidia-smiExpected: if it errors, there is no NVIDIA driver on this machineIf you need GPU: install the NVIDIA driver for your OS, then reinstall the matching TF + CUDA/cuDNN per TF's tested build table Expected:
import tensorflowloads andtf.config.list_physical_devices('GPU')lists your cardIf you do not need GPU:
pip install tensorflow-cpuExpected: import works, no libcuda complaint
When this applies
- import tensorflow fails naming libcuda.so.1
- running on a machine without an NVIDIA GPU/driver
When this does not apply
- libcudart/libcublas errors (toolkit libs, different fix)
- tensorflow not installed at all
Version compatibility
tensorflow 2.x GPU builds on Linux. libcuda.so.1 comes from the NVIDIA kernel driver package.
Why it happens
TensorFlow's GPU build dlopens libcuda.so.1 at import. That file is installed by the NVIDIA driver, not by pip and not by the CUDA toolkit. No driver, no file, import fails.
Edge cases
- Docker users: use the nvidia-container-toolkit and --gpus all, the host driver must exist.
- WSL2 needs the NVIDIA WSL driver on the Windows side.
- Do not fix this by copying libcuda.so.1 from another machine; install the driver.