diff --git a/bob/extension/test_utils.py b/bob/extension/test_utils.py
index d5620d7372d99d509aba8c6fb330a35695006a49..cb723637de76082d85fb4b7beba1b1e984c8b17b 100644
--- a/bob/extension/test_utils.py
+++ b/bob/extension/test_utils.py
@@ -9,7 +9,8 @@
 import os
 import sys
 import nose.tools
-from .utils import uniq, egrep, find_file, find_header, find_library
+from .utils import uniq, egrep, find_file, find_header, find_library, \
+    load_requirements
 
 def test_uniq():
 
@@ -87,3 +88,20 @@ def test_find_versioned_library():
 
   for k in lib:
     assert k.find('boost_system') >= 0
+
+def test_requirement_readout():
+
+  from StringIO import StringIO as stringio
+
+  f = """ # this is my requirements file
+package-a >= 0.42
+package-b
+package-c
+#package-e #not to be included
+
+package-z
+"""
+
+  result = load_requirements(stringio(f))
+  expected = ['package-a >= 0.42', 'package-b', 'package-c', 'package-z']
+  nose.tools.eq_(result, expected)
diff --git a/bob/extension/utils.py b/bob/extension/utils.py
index c6054ad261acc2a3521fcf9d9771667641be03d0..026e152924fe50bf211d40d0b4880444e6144342 100644
--- a/bob/extension/utils.py
+++ b/bob/extension/utils.py
@@ -325,3 +325,13 @@ def egrep(filename, expression):
       if p: retval.append(p)
 
   return retval
+
+def load_requirements(f=None):
+  """Loads the contents of requirements.txt on the given path.
+
+  Defaults to "./requirements.txt"
+  """
+
+  f = f if f is not None else open("requirements.txt", 'rt')
+  retval = [k.strip() for k in f]
+  return [k for k in retval if k and k[0] != '#']