diff --git a/.gitlab-ci/default.yml b/.gitlab-ci/default.yml
index 17f7d7739334ea2416f25ad0017005d8aa947803..768c56edaafab4cfc65fc7615f6eaaab0a434da6 100644
--- a/.gitlab-ci/default.yml
+++ b/.gitlab-ci/default.yml
@@ -51,13 +51,15 @@ black (python):
 pylint-flake8 (python):
   stage: linting
   script:
+    # restore Python virtual env from cache (job:configure artifacts) (Dune 2.9)
+    - |
+      if [ -d "build-cmake/dune-env" ]; then
+        rm -r /dune/modules/dune-common/build-cmake/dune-env
+        mv build-cmake/dune-env /dune/modules/dune-common/build-cmake/dune-env
+      fi
     - |
       if [ -d build-cmake/python/dumux ] ; then
         source bin/testing/ci-setup-python-env.sh
-        # if we are in venv (Dune 2.9) install linters
-        if [ -d "/dune/modules/dune-common/build-cmake/dune-env" ]; then
-          python -m pip install pylint flake8
-        fi
         pylint --rcfile=.pylintrc build-cmake/python/dumux
         pylint --rcfile=.pylintrc bin
         flake8 build-cmake/python/dumux
diff --git a/dune.module b/dune.module
index 7d3cb02572eb68f88854f37ccf521dec4d733390..4bf3ee560f7ec2bea73b2827b2d111c6a93c5c98 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:
+Python-Requires: flake8 pylint numpy
 Whitespace-Hook: Yes
diff --git a/python/setup.py.in b/python/setup.py.in
index 8504ecc10b39cc54175d72527bf4365f218b8647..539ce130d7cb05e227856fb9d499015619e7e397 100644
--- a/python/setup.py.in
+++ b/python/setup.py.in
@@ -1,4 +1,4 @@
-from setuptools import setup
+from setuptools import setup, find_packages
 
 REQUIRED_PACKAGES = '${RequiredPythonModules}'.replace(';',' ').split(' ')
 
@@ -8,7 +8,7 @@ setup(
     version="${ProjectVersionString}",
     author="${ProjectAuthor}",
     author_email="${ProjectMaintainerEmail}",
-    packages=["dumux"],
+    packages=find_packages(),
     zip_safe=0,
     package_data={"": ["*.so"]},
     install_requires=REQUIRED_PACKAGES,