Centralize declaration of docs and pep8 deps in setup.py
diff --git a/dev-requirements.txt b/dev-requirements.txt
index 0ad5f92..8c4a188 100644
--- a/dev-requirements.txt
+++ b/dev-requirements.txt
@@ -1,14 +1,8 @@
 clint
 coverage
-flake8
-flake8-import-order
 invoke
-pep8-naming
 requests
-sphinx
-sphinx_rtd_theme
-sphinxcontrib-spelling
 tox
 twine
--e .[test]
+-e .[test,docs-test,pep8-test]
 -e vectors
diff --git a/setup.py b/setup.py
index ce04d2c..1b7454a 100644
--- a/setup.py
+++ b/setup.py
@@ -310,6 +310,19 @@
     tests_require=test_requirements,
     extras_require={
         "test": test_requirements,
+        "docs-test": [
+            "doc8",
+            "pyenchant",
+            "readme_renderer",
+            "sphinx",
+            "sphinx_rtd_theme",
+            "sphinxcontrib-spelling",
+        ],
+        "pep8-test": [
+            "flake8",
+            "flake8-import-order",
+            "pep8-naming",
+        ],
     },
 
     # for cffi
diff --git a/tox.ini b/tox.ini
index 6ad8285..5cba83e 100644
--- a/tox.ini
+++ b/tox.ini
@@ -24,12 +24,7 @@
 
 [testenv:docs]
 deps =
-    doc8
-    pyenchant
-    readme_renderer
-    sphinx
-    sphinx_rtd_theme
-    sphinxcontrib-spelling
+    .[docs-test]
 basepython = python2.7
 commands =
     sphinx-build -W -b html -d {envtmpdir}/doctrees docs docs/_build/html
@@ -57,18 +52,14 @@
 
 [testenv:pep8]
 deps =
-    flake8
-    flake8-import-order
-    pep8-naming
+    .[pep8-test]
 commands =
     flake8 .
 
 [testenv:py3pep8]
 basepython = python3
 deps =
-    flake8
-    flake8-import-order
-    pep8-naming
+    .[pep8-test]
 commands =
     flake8 .