diff --git a/requirements/base.in b/requirements/base.in
index 123eb5a18bb507d372831acd8c715ab95354f06f..8b547a6b937a08326ed92e56829202d83f1ccce4 100644
--- a/requirements/base.in
+++ b/requirements/base.in
@@ -1,5 +1,5 @@
 appdirs
 click>=7.0
 click_repl
-jinja2
+jinja2>=2.9
 pyyaml>=4.2b1
diff --git a/setup.py b/setup.py
index d6467c5ad77a322326310dd85bd64e04916e3905..2ec0999c360b8e2e3c5df485a3d55eca43d7d4e7 100644
--- a/setup.py
+++ b/setup.py
@@ -10,6 +10,11 @@ with io.open(os.path.join(here, "README.rst"), "rt", encoding="utf8") as f:
 about = {}
 with io.open(os.path.join(here, "tutor", "__about__.py"), "rt", encoding="utf-8") as f:
     exec(f.read(), about)
+requirements = []
+with io.open(
+    os.path.join(here, "requirements", "base.in"), "rt", encoding="utf-8"
+) as f:
+    requirements = [line.strip() for line in f]
 
 setup(
     name="tutor-openedx",
@@ -30,7 +35,7 @@ setup(
     packages=find_packages(exclude=["tests*"]),
     include_package_data=True,
     python_requires=">=3.5",
-    install_requires=["appdirs", "click>=7.0", "click_repl", "jinja2", "pyyaml>=4.2b1"],
+    install_requires=requirements,
     entry_points={"console_scripts": ["tutor=tutor.commands.cli:main"]},
     classifiers=[
         "Development Status :: 5 - Production/Stable",