diff --git a/requirements-direct.txt b/requirements-direct.txt
new file mode 100644
index 00000000..6f03da8d
--- /dev/null
+++ b/requirements-direct.txt
@@ -0,0 +1,7 @@
+click==6.7
+jinja2==2.9.6
+jsonpath-ng==1.4.3
+jsonschema==2.6.0
+pbr==3.0.1
+pyyaml==3.12
+requests==2.18.4
diff --git a/requirements.txt b/requirements.txt
index 6f03da8d..7be29c1c 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,7 +1,2 @@
-click==6.7
-jinja2==2.9.6
-jsonpath-ng==1.4.3
-jsonschema==2.6.0
-pbr==3.0.1
-pyyaml==3.12
-requests==2.18.4
+# Warning: This file should be empty.
+# Specify direct dependencies in requirements-direct.txt instead.
diff --git a/tox.ini b/tox.ini
index 2a9a6c91..96f85fcf 100644
--- a/tox.ini
+++ b/tox.ini
@@ -17,7 +17,7 @@ commands =
     python setup.py build_sphinx {posargs}
 
 [testenv:freeze]
-deps = -r{toxinidir}/requirements.txt
+deps = -r{toxinidir}/requirements-direct.txt
 whitelist_externals=sh
 commands=
     sh -c "pip freeze | grep -v '^promenade' > {toxinidir}/requirements-frozen.txt"