diff --git a/setup.cfg b/setup.cfg
index 24d6c95..1bf9291 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -13,13 +13,18 @@ extras =
 deps =
     flake8
     isort
-    mypy
+    # mypy installation fails with pypy<3.9
+    mypy; implementation_name!='pypy' or python_version>='3.9'
     types-setuptools
     pytest-cov
 commands =
     flake8 .
     isort --check --diff .
-    mypy .
+    # Run mypy if it's installed
+    python -c 'import importlib.util, subprocess, sys; \
+               importlib.util.find_spec("mypy") \
+                   and sys.exit(subprocess.run(["mypy", "."]).returncode) \
+                   or print("mypy is not installed")'
     pytest -r s --cov --cov-report=term --cov-report=xml .
 
 [tool:isort]