How to fix Dockerfile numba install Unknown compiler(s): gfortran

Problem

During a Docker build, you encounter the following error while installing the numba package using pip install numba or similar:

../meson.build:84:0: ERROR: Unknown compiler(s): [['gfortran'], ['flang-new'], ['flang'], ['nvfortran'], ['pgfortran'], ['ifort'], ['ifx'], ['g95']]
The following exception(s) were encountered:
Running `gfortran --help` gave "[Errno 2] No such file or directory: 'gfortran'"
Running `gfortran --version` gave "[Errno 2] No such file or directory: 'gfortran'"
Running `gfortran -V` gave "[Errno 2] No such file or directory: 'gfortran'"
Running `flang-new --help` gave "[Errno 2] No such file or directory: 'flang-new'"
Running `flang-new --version` gave "[Errno 2] No such file or directory: 'flang-new'"
Running `flang-new -V` gave "[Errno 2] No such file or directory: 'flang-new'"
Running `flang --help` gave "[Errno 2] No such file or directory: 'flang'"
Running `flang --version` gave "[Errno 2] No such file or directory: 'flang'"
Running `flang -V` gave "[Errno 2] No such file or directory: 'flang'"
Running `nvfortran --help` gave "[Errno 2] No such file or directory: 'nvfortran'"
Running `nvfortran --version` gave "[Errno 2] No such file or directory: 'nvfortran'"
Running `nvfortran -V` gave "[Errno 2] No such file or directory: 'nvfortran'"
Running `pgfortran --help` gave "[Errno 2] No such file or directory: 'pgfortran'"
Running `pgfortran --version` gave "[Errno 2] No such file or directory: 'pgfortran'"
Running `pgfortran -V` gave "[Errno 2] No such file or directory: 'pgfortran'"
Running `ifort --help` gave "[Errno 2] No such file or directory: 'ifort'"
Running `ifort --version` gave "[Errno 2] No such file or directory: 'ifort'"
Running `ifort -V` gave "[Errno 2] No such file or directory: 'ifort'"
Running `ifx --help` gave "[Errno 2] No such file or directory: 'ifx'"
Running `ifx --version` gave "[Errno 2] No such file or directory: 'ifx'"
Running `ifx -V` gave "[Errno 2] No such file or directory: 'ifx'"
Running `g95 --help` gave "[Errno 2] No such file or directory: 'g95'"
Running `g95 --version` gave "[Errno 2] No such file or directory: 'g95'"
Running `g95 -V` gave "[Errno 2] No such file or directory: 'g95'"

A full log can be found at /tmp/pip-install-l_00fysc/scipy_f981fab0cf9a41a1bdc2d7886d06a66d/.mesonpy-0dhuk7ie/meson-logs/meson-log.txt
[end of output]

Solution

You need to install the gfortran package in the container:

sudo apt -y install gfortran

Add the following line to your Dockerfile (for deb-based distributions):

ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y gfortran libopenblas-dev && rm -rf /var/lib/apt/lists/*

libopenblas-dev is required in addition to gfortran to build numba.