diff --git a/lib/spack/external/_pytest/fixtures.py b/lib/spack/external/_pytest/fixtures.py
index b76ad5033995f924c2a9e8b167836a64b9eed56d..98317a48890703aae201dcc30ed90b347dbd49b8 100644
--- a/lib/spack/external/_pytest/fixtures.py
+++ b/lib/spack/external/_pytest/fixtures.py
@@ -21,10 +21,7 @@
 from _pytest.outcomes import fail, TEST_OUTCOME
 
 
-if sys.version_info[:2] == (2, 6):
-    from ordereddict import OrderedDict
-else:
-    from collections import OrderedDict  # nopyqver
+from ordereddict_backport import OrderedDict
 
 
 def pytest_sessionstart(session):
diff --git a/lib/spack/spack/util/ordereddict.py b/lib/spack/external/ordereddict_backport.py
similarity index 100%
rename from lib/spack/spack/util/ordereddict.py
rename to lib/spack/external/ordereddict_backport.py
diff --git a/lib/spack/spack/config.py b/lib/spack/spack/config.py
index 73738c9ed30f896b4081d88802798b261213e7e1..d54dd74d5a3da4db96f56cccd211a53eb3f3570e 100644
--- a/lib/spack/spack/config.py
+++ b/lib/spack/spack/config.py
@@ -57,6 +57,7 @@
 from contextlib import contextmanager
 from six import string_types
 from six import iteritems
+from ordereddict_backport import OrderedDict
 
 import yaml
 from yaml.error import MarkedYAMLError
@@ -69,7 +70,6 @@
 import spack.architecture
 import spack.schema
 from spack.error import SpackError
-from spack.util.ordereddict import OrderedDict
 
 # Hacked yaml for configuration files preserves line numbers.
 import spack.util.spack_yaml as syaml
diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py
index 1072513c3c9e2ad2f42297d260e129af7ab857c1..d1f96451d4b8a70e4f652cdef9081b29f0da19a6 100644
--- a/lib/spack/spack/test/conftest.py
+++ b/lib/spack/spack/test/conftest.py
@@ -28,6 +28,7 @@
 import shutil
 import re
 
+import ordereddict_backport
 import py
 import pytest
 
@@ -42,7 +43,6 @@
 import spack.platforms.test
 import spack.repo
 import spack.stage
-import spack.util.ordereddict
 import spack.util.executable
 import spack.util.pattern
 from spack.dependency import Dependency
@@ -603,7 +603,7 @@ def __init__(self, name, dependencies, dependency_types, conditions=None,
                  versions=None):
         self.name = name
         self.spec = None
-        self.dependencies = spack.util.ordereddict.OrderedDict()
+        self.dependencies = ordereddict_backport.OrderedDict()
 
         assert len(dependencies) == len(dependency_types)
         for dep, dtype in zip(dependencies, dependency_types):
diff --git a/lib/spack/spack/util/spack_yaml.py b/lib/spack/spack/util/spack_yaml.py
index f7adadb9808f15fbc687fa3578b52032d7880394..c02f6c9d0405fdb522a08484dc7f8cd0bb529295 100644
--- a/lib/spack/spack/util/spack_yaml.py
+++ b/lib/spack/spack/util/spack_yaml.py
@@ -31,6 +31,7 @@
   default unorderd dict.
 
 """
+from ordereddict_backport import OrderedDict
 from six import string_types, StringIO
 
 import yaml
@@ -41,7 +42,6 @@
 from llnl.util.tty.color import colorize, clen, cextra
 
 import spack.error
-from spack.util.ordereddict import OrderedDict
 
 # Only export load and dump
 __all__ = ['load', 'dump', 'SpackYAMLError']