diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..659f51395e4c32c0a1ee16ba4391f2f0e9692a08
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,7 @@
+setuptools
+bob.extension
+bob.blitz
+bob.core
+bob.math
+bob.io.base
+matplotlib
diff --git a/setup.py b/setup.py
index f1a60fee5be4dabc99deb10d1a2497a178cf73d3..df860d4507ffc98c4434eb8829eb72ce37509fad 100644
--- a/setup.py
+++ b/setup.py
@@ -6,9 +6,12 @@
 bob_packages = ['bob.core', 'bob.math']
 
 from setuptools import setup, find_packages, dist
-dist.Distribution(dict(setup_requires=['bob.blitz'] + bob_packages))
+dist.Distribution(dict(setup_requires=['bob.extension', 'bob.blitz'] + bob_packages))
 from bob.blitz.extension import Extension, build_ext
 
+from bob.extension.utils import load_requirements
+build_requires = load_requirements()
+
 packages = ['blitz >= 0.10', 'boost']
 
 version = '2.0.0a0'
@@ -29,14 +32,8 @@ setup(
     include_package_data=True,
     zip_safe=False,
 
-    install_requires=[
-      'setuptools',
-      'bob.blitz',
-      'bob.core',
-      'bob.math',
-      'bob.io.base',
-      'matplotlib',
-    ],
+    setup_requires = build_requires,
+    install_requires = build_requires,
 
     namespace_packages=[
       "bob",