diff --git a/common/djangoapps/track/admin.py b/common/djangoapps/track/admin.py
index f450a923242f4bb753b8eb6debcd678c9f410b92..a0a3b20c6a82861b6a6ee35230ab267991bcfe94 100644
--- a/common/djangoapps/track/admin.py
+++ b/common/djangoapps/track/admin.py
@@ -2,6 +2,8 @@
 django admin pages for courseware model
 '''
 
+from __future__ import absolute_import
+
 from django.contrib import admin
 
 from track.models import TrackingLog
diff --git a/common/djangoapps/track/contexts.py b/common/djangoapps/track/contexts.py
index 377b9b76f60140397734efa319de5f8f15082c47..0954a8b5486bd43850b06e1f3e1701812144e246 100644
--- a/common/djangoapps/track/contexts.py
+++ b/common/djangoapps/track/contexts.py
@@ -1,4 +1,6 @@
 """Generates common contexts"""
+from __future__ import absolute_import
+
 import logging
 
 from opaque_keys import InvalidKeyError
diff --git a/common/djangoapps/track/event_transaction_utils.py b/common/djangoapps/track/event_transaction_utils.py
index 6c24f9ede2a4220ee27db14703ae20035e429157..5a7d0938e916ee5beb35a67f4471bac4b970cfbb 100644
--- a/common/djangoapps/track/event_transaction_utils.py
+++ b/common/djangoapps/track/event_transaction_utils.py
@@ -2,6 +2,8 @@
 Helper functions to access and update the id and type
 used in event tracking.
 """
+from __future__ import absolute_import
+
 from uuid import UUID, uuid4
 
 from openedx.core.lib.cache_utils import get_cache
diff --git a/common/djangoapps/track/middleware.py b/common/djangoapps/track/middleware.py
index 99a1c0e975f84cc0c748e03de5adc27ace2181f1..6ccb7617aff6dabcb5f43237dd5fa1b9c0f7cae0 100644
--- a/common/djangoapps/track/middleware.py
+++ b/common/djangoapps/track/middleware.py
@@ -6,6 +6,8 @@ framework.
 """
 
 
+from __future__ import absolute_import
+
 import hashlib
 import hmac
 import json
@@ -13,10 +15,11 @@ import logging
 import re
 import sys
 
+import six
 from django.conf import settings
+from eventtracking import tracker
 from ipware.ip import get_ip
 
-from eventtracking import tracker
 from track import contexts, views
 
 log = logging.getLogger(__name__)
@@ -137,7 +140,7 @@ class TrackMiddleware(object):
             'username': self.get_username(request),
             'ip': self.get_request_ip_address(request),
         }
-        for header_name, context_key in META_KEY_TO_CONTEXT_KEY.iteritems():
+        for header_name, context_key in six.iteritems(META_KEY_TO_CONTEXT_KEY):
             # HTTP headers may contain Latin1 characters. Decoding using Latin1 encoding here
             # avoids encountering UnicodeDecodeError exceptions when these header strings are
             # output to tracking logs.
diff --git a/common/djangoapps/track/models.py b/common/djangoapps/track/models.py
index c59cf6502af15cd0c9feb7b1db46d75649e9e85c..c4fbb76c2a204c1778039580bda3f91a57860670 100644
--- a/common/djangoapps/track/models.py
+++ b/common/djangoapps/track/models.py
@@ -1,2 +1,4 @@
 # pylint: disable=unused-import, missing-docstring
+from __future__ import absolute_import
+
 from track.backends.django import TrackingLog
diff --git a/common/djangoapps/track/segment.py b/common/djangoapps/track/segment.py
index de73bf24b067e7311f8bc1baf952c8a81a19f1ad..3a010d99ca21a930b81ec29b2a5b7019ce7754b2 100644
--- a/common/djangoapps/track/segment.py
+++ b/common/djangoapps/track/segment.py
@@ -8,11 +8,12 @@ required by server-side events.
 To use, call "from track import segment", then call segment.track() or segment.identify().
 
 """
-from urlparse import urlunsplit
+from __future__ import absolute_import
 
 import analytics
 from django.conf import settings
 from eventtracking import tracker
+from six.moves.urllib.parse import urlunsplit
 
 
 def track(user_id, event_name, properties=None, context=None):
diff --git a/common/djangoapps/track/shim.py b/common/djangoapps/track/shim.py
index 5773539f94fc619d2b5fd510ae85e1bd3c8e86a3..b4446bff4336429d682cc59de71b14a0c9bf3344 100644
--- a/common/djangoapps/track/shim.py
+++ b/common/djangoapps/track/shim.py
@@ -1,5 +1,7 @@
 """Map new event context values to old top-level field values. Ensures events can be parsed by legacy parsers."""
 
+from __future__ import absolute_import
+
 import json
 
 from .transformers import EventTransformerRegistry
diff --git a/common/djangoapps/track/tracker.py b/common/djangoapps/track/tracker.py
index a3614c76e9e33bf5cda709780b09593813d84a89..42ea290972008f0541c9ec48fd30ef826f265d8b 100644
--- a/common/djangoapps/track/tracker.py
+++ b/common/djangoapps/track/tracker.py
@@ -18,9 +18,12 @@ below::
 
 """
 
+from __future__ import absolute_import
+
 import inspect
 from importlib import import_module
 
+import six
 from django.conf import settings
 
 from track.backends import BaseBackend
@@ -41,7 +44,7 @@ def _initialize_backends_from_django_settings():
 
     config = getattr(settings, 'TRACKING_BACKENDS', {})
 
-    for name, values in config.iteritems():
+    for name, values in six.iteritems(config):
         # Ignore empty values to turn-off default tracker backends
         if values:
             engine = values['ENGINE']
@@ -86,7 +89,7 @@ def send(event):
 
     """
 
-    for name, backend in backends.iteritems():
+    for name, backend in six.iteritems(backends):
         backend.send(event)
 
 
diff --git a/common/djangoapps/track/transformers.py b/common/djangoapps/track/transformers.py
index 75a943f7730b2d7b4c3274a3ee1de6d896b3ef3e..634a93cca624e752fb1493e662f065edae44274c 100644
--- a/common/djangoapps/track/transformers.py
+++ b/common/djangoapps/track/transformers.py
@@ -5,9 +5,12 @@ by name (or name prefix) in the EventTransformerRegistry, which is used to
 apply them to the appropriate events.
 """
 
+from __future__ import absolute_import
+
 import json
 import logging
 
+import six
 from opaque_keys import InvalidKeyError
 from opaque_keys.edx.keys import UsageKey
 
@@ -46,7 +49,7 @@ class DottedPathMapping(object):
     def __getitem__(self, key):
         if key in self._match_registry:
             return self._match_registry[key]
-        if isinstance(key, basestring):
+        if isinstance(key, six.string_types):
             # Reverse-sort the keys to find the longest matching prefix.
             for prefix in sorted(self._prefix_registry, reverse=True):
                 if key.startswith(prefix):
@@ -87,7 +90,7 @@ class DottedPathMapping(object):
         Return the keys of the mapping, including both exact matches and
         prefix matches.
         """
-        return self._match_registry.keys() + self._prefix_registry.keys()
+        return list(self._match_registry.keys()) + list(self._prefix_registry.keys())
 
 
 class EventTransformerRegistry(object):
@@ -220,7 +223,7 @@ class EventTransformer(dict):
         Create a data version of self[u'event'] at self.event
         """
         if u'event' in self:
-            if isinstance(self[u'event'], basestring):
+            if isinstance(self[u'event'], six.string_types):
                 self.event = json.loads(self[u'event'])
             else:
                 self.event = self[u'event']
@@ -231,7 +234,7 @@ class EventTransformer(dict):
 
         Keep the same format we were originally given.
         """
-        if isinstance(self.get(u'event'), basestring):
+        if isinstance(self.get(u'event'), six.string_types):
             self[u'event'] = json.dumps(self.event)
         else:
             self[u'event'] = self.event
diff --git a/common/djangoapps/track/urls.py b/common/djangoapps/track/urls.py
index b1ada5a3adf016681f3e02e743ce9e08576dfb99..e014c198aafbc6d12dea66c236386c022fd053c8 100644
--- a/common/djangoapps/track/urls.py
+++ b/common/djangoapps/track/urls.py
@@ -2,6 +2,8 @@
 URLs for track app
 """
 
+from __future__ import absolute_import
+
 from django.conf import settings
 from django.conf.urls import url
 
diff --git a/common/djangoapps/track/utils.py b/common/djangoapps/track/utils.py
index 9a20fe249e01e17e9e81f120f6e21b01a962794b..8a6c42aea9b7af7cd1528fae32a3a7c0a10649f6 100644
--- a/common/djangoapps/track/utils.py
+++ b/common/djangoapps/track/utils.py
@@ -1,5 +1,7 @@
 """Utility functions and classes for track backends"""
 
+from __future__ import absolute_import
+
 import json
 from datetime import date, datetime