diff --git a/setup.py b/setup.py
index d8808e6b7ec456e143bfbe7f52f575780fb1409e..69f8e93d8112e11a7090ee6022769750c1997797 100644
--- a/setup.py
+++ b/setup.py
@@ -33,7 +33,7 @@ setup(
         "PyYAML",
         "jmespath",
         "toml",
-        "subprocess32>=3.5.0",
+        "subprocess32>=3.5.0;python_version<'3.5'",
     ],
     extras_require={"dev": ["pipenv"]},
     entry_points={"console_scripts": ["template=template:main"]},
diff --git a/template/filters.py b/template/filters.py
index 6d1a9f5220e6995fefdc82b22101376586b3bbc0..c5218852042a4be75bdc6e0cc4975097d195ee25 100644
--- a/template/filters.py
+++ b/template/filters.py
@@ -157,11 +157,16 @@ def run(*argv, **kwargs):
     >>> run(['ls', 'foo'])['returncode'] > 0
     True
     """
-    import subprocess32  # nosec
+    import sys
 
-    defaults = {"stdout": subprocess32.PIPE, "stderr": subprocess32.PIPE}
+    if sys.version_info[0] < 3:  # nosec
+        import subprocess32 as subprocess
+    else:
+        import subprocess
+
+    defaults = {"stdout": subprocess.PIPE, "stderr": subprocess.PIPE}
     defaults.update(kwargs)
-    proc = subprocess32.run(*argv, **defaults).__dict__
+    proc = subprocess.run(*argv, **defaults).__dict__  # nosec
     if "text" not in kwargs or kwargs["text"]:
         proc["stdout"] = proc["stdout"].decode()
         proc["stderr"] = proc["stderr"].decode()