diff --git a/.gitlab-ci/default.yml b/.gitlab-ci/default.yml
index 195b0c83d2dea9700e440f39ed6836ae1da818fa..c95b331d99d97f9c3ef0535bb302e4b3dada70d0 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 0bfeac11b01514d7cc68c0700da9b4026ba68129..c2fcccbb056b399af8a782d8aaa3231fdb9c1ffe 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