diff --git a/.gitlab-ci/default.yml b/.gitlab-ci/default.yml
index 6b04a76eb5af025a9f1f30dbb4ec837314ebf63a..201bcd3ff6f3a1d52c8d802485f1e386353b7382 100644
--- a/.gitlab-ci/default.yml
+++ b/.gitlab-ci/default.yml
@@ -35,6 +35,8 @@ configure:
     # cache state of the Dune virtual env for Python if it exists (Dune 2.9)
     - |
       if [ -d "/dune/modules/dune-common/build-cmake/dune-env" ]; then
+        source /dune/modules/dune-common/build-cmake/dune-env/bin/activate
+        python3 -m pip install -r requirements.txt
         cp -r /dune/modules/dune-common/build-cmake/dune-env build-cmake
       fi
   artifacts:
diff --git a/dune.module b/dune.module
index 239478c3de7aeaa8d830b8da031313984de96547..b9023cc64bbe67125e2f52a4780e5a9f20e62fb3 100644
--- a/dune.module
+++ b/dune.module
@@ -6,5 +6,5 @@ Depends: dune-common (>=2.8) dune-grid (>=2.8) dune-localfunctions (>=2.8) dune-
 Suggests: dune-alugrid (>=2.8) dune-foamgrid (>=2.8) dune-uggrid (>=2.8) dune-functions (>=2.8) opm-common opm-grid dune-subgrid (>=2.8) dune-spgrid (>=2.8) dune-mmesh (>=1.2)
 Description: DuMux is a module for simulation of multi-phase multi-component flow transport in porous media
 URL: https://dumux.org
-Python-Requires: flake8 pylint numpy
+Python-Requires: numpy
 Whitespace-Hook: Yes
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..dc27b635bb5991bd33cbd010a7e967c66258905f
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,7 @@
+numpy
+matplotlib
+pylint~=2.14.0
+flake8~=6.0.0
+black~=22.0
+codespell~=2.2.2
+fieldcompare[all]~=0.1.0