diff --git a/cms/envs/devstack.py b/cms/envs/devstack.py
index 8cff4bb094af69ac3e8a4c9a2d9772291f3c9932..66b1bfe6d867668c4504554778245512e7c88d75 100644
--- a/cms/envs/devstack.py
+++ b/cms/envs/devstack.py
@@ -2,6 +2,9 @@
 Specific overrides to the base prod settings to make development easier.
 """
 
+from __future__ import absolute_import
+
+import logging
 from os.path import abspath, dirname, join
 
 from .production import *  # pylint: disable=wildcard-import, unused-wildcard-import
@@ -19,7 +22,6 @@ HTTPS = 'off'
 
 ################################ LOGGERS ######################################
 
-import logging
 
 # Disable noisy loggers
 for pkg_name in ['track.contexts', 'track.middleware']:
@@ -180,7 +182,10 @@ IDA_LOGOUT_URI_LIST = [
 ]
 
 #####################################################################
-from openedx.core.djangoapps.plugins import plugin_settings, constants as plugin_constants
+
+# pylint: disable=wrong-import-order, wrong-import-position
+from openedx.core.djangoapps.plugins import constants as plugin_constants, plugin_settings
+
 plugin_settings.add_plugins(__name__, plugin_constants.ProjectType.CMS, plugin_constants.SettingsType.DEVSTACK)
 
 ###############################################################################
diff --git a/cms/envs/devstack_with_worker.py b/cms/envs/devstack_with_worker.py
index 671f09191db8499f8b24123b4da4bcaf5b2b330e..0fdedf2ed3207363b52c2a88b435a128ecb186e8 100644
--- a/cms/envs/devstack_with_worker.py
+++ b/cms/envs/devstack_with_worker.py
@@ -11,6 +11,8 @@ In two separate processes on devstack:
     ./manage.py cms celery worker --settings=devstack_with_worker
 """
 
+from __future__ import absolute_import
+
 import os
 
 # We intentionally define lots of variables that aren't used, and
diff --git a/cms/envs/production.py b/cms/envs/production.py
index 68edf2b3b49a08106505300a59bb2c5ca4cc4cd0..cdc0b2f8a685a07ad4663423324c5398dac6b62f 100644
--- a/cms/envs/production.py
+++ b/cms/envs/production.py
@@ -4,22 +4,25 @@ This is the default template for our main set of AWS servers.
 
 # We intentionally define lots of variables that aren't used, and
 # want to import all variables from base settings files
-# pylint: disable=wildcard-import, unused-wildcard-import
+# pylint: disable=wildcard-import, unused-wildcard-import, wrong-import-order
+
+from __future__ import absolute_import
 
 import codecs
 import os
 import yaml
 
-from path import Path as path
-from xmodule.modulestore.modulestore_settings import convert_module_store_setting_if_needed
-from openedx.core.djangoapps.plugins import plugin_settings, constants as plugin_constants
 from django.core.exceptions import ImproperlyConfigured
 from django.core.urlresolvers import reverse_lazy
+from path import Path as path
 
 from .common import *
 
-from openedx.core.lib.derived import derive_settings  # pylint: disable=wrong-import-order
-from openedx.core.lib.logsettings import get_logger_config  # pylint: disable=wrong-import-order
+from openedx.core.djangoapps.plugins import constants as plugin_constants
+from openedx.core.djangoapps.plugins import plugin_settings
+from openedx.core.lib.derived import derive_settings
+from openedx.core.lib.logsettings import get_logger_config
+from xmodule.modulestore.modulestore_settings import convert_module_store_setting_if_needed
 
 
 def get_env_setting(setting):
@@ -442,7 +445,7 @@ CELERY_QUEUES.update(
     {
         alternate: {}
         for alternate in ALTERNATE_QUEUES
-        if alternate not in CELERY_QUEUES.keys()
+        if alternate not in list(CELERY_QUEUES.keys())
     }
 )
 
diff --git a/cms/envs/test.py b/cms/envs/test.py
index df7198303abee3f2b60a0bb0f0e2bd0271e8d2ba..12d809c314f4c97a08c70d088144db22f5d9c722 100644
--- a/cms/envs/test.py
+++ b/cms/envs/test.py
@@ -11,33 +11,37 @@ sessions. Assumes structure:
 
 # We intentionally define lots of variables that aren't used, and
 # want to import all variables from base settings files
-# pylint: disable=wildcard-import, unused-wildcard-import
+# pylint: disable=wildcard-import, unused-wildcard-import, wrong-import-order
 
-from django.utils.translation import ugettext_lazy
+from __future__ import absolute_import
 
 from .common import *
 import os
-from path import Path as path
 from uuid import uuid4
-from util.db import NoOpMigrationModules
+
+
+from django.utils.translation import ugettext_lazy
+from path import Path as path
+
 from openedx.core.lib.derived import derive_settings
+from util.db import NoOpMigrationModules
 
 # import settings from LMS for consistent behavior with CMS
 # pylint: disable=unused-import
 from lms.envs.test import (
-    WIKI_ENABLED,
-    PLATFORM_NAME,
-    PLATFORM_DESCRIPTION,
-    SITE_NAME,
-    DEFAULT_FILE_STORAGE,
-    MEDIA_ROOT,
-    MEDIA_URL,
     COMPREHENSIVE_THEME_DIRS,
+    DEFAULT_FILE_STORAGE,
+    ECOMMERCE_API_URL,
     ENABLE_COMPREHENSIVE_THEMING,
     JWT_AUTH,
+    MEDIA_ROOT,
+    MEDIA_URL,
+    PLATFORM_DESCRIPTION,
+    PLATFORM_NAME,
     REGISTRATION_EXTRA_FIELDS,
-    ECOMMERCE_API_URL,
     GRADES_DOWNLOAD,
+    SITE_NAME,
+    WIKI_ENABLED
 )
 
 
@@ -352,6 +356,7 @@ VIDEO_TRANSCRIPTS_SETTINGS = dict(
 
 ####################### Plugin Settings ##########################
 
+# pylint: disable=wrong-import-position
 from openedx.core.djangoapps.plugins import plugin_settings, constants as plugin_constants
 plugin_settings.add_plugins(__name__, plugin_constants.ProjectType.CMS, plugin_constants.SettingsType.TEST)
 
diff --git a/cms/envs/test_static_optimized.py b/cms/envs/test_static_optimized.py
index 64a94efa31981ecc98af8ab7edfe5a5a91e6f6bd..ef3ad796391782976fa4aec096e35b77c5a92fba 100644
--- a/cms/envs/test_static_optimized.py
+++ b/cms/envs/test_static_optimized.py
@@ -11,9 +11,13 @@ from the same directory.
 """
 
 # Start with the common settings
+from __future__ import absolute_import
+
 from .common import *  # pylint: disable=wildcard-import, unused-wildcard-import
+
 from openedx.core.lib.derived import derive_settings
 
+
 # Use an in-memory database since this settings file is only used for updating assets
 DATABASES = {
     'default': {
diff --git a/cms/startup.py b/cms/startup.py
index abf6f7cd139c7a192012f191cf34a51c1baf439d..53d64948101a384a642cd7f75736e5020edc444d 100644
--- a/cms/startup.py
+++ b/cms/startup.py
@@ -2,6 +2,8 @@
 Module for code that should run during Studio startup (deprecated)
 """
 
+from __future__ import absolute_import
+
 import django
 from django.conf import settings
 
diff --git a/cms/urls.py b/cms/urls.py
index 251aea690d353b9ab0253be4eb8fef0a4993685c..6feb0e506f4a3b73044f43611a27aa3dfd4d1de4 100644
--- a/cms/urls.py
+++ b/cms/urls.py
@@ -1,19 +1,23 @@
+"""
+Urls of Studio.
+"""
+from __future__ import absolute_import
+
 from django.conf import settings
 from django.conf.urls import include, url
 from django.conf.urls.static import static
 from django.contrib.admin import autodiscover as django_autodiscover
 from django.utils.translation import ugettext_lazy as _
-from openedx.core.openapi import schema_view
+from ratelimitbackend import admin
 
 import contentstore.views
-from cms.djangoapps.contentstore.views.organization import OrganizationListView
 import openedx.core.djangoapps.common_views.xblock
 import openedx.core.djangoapps.debug.views
 import openedx.core.djangoapps.lang_pref.views
+from cms.djangoapps.contentstore.views.organization import OrganizationListView
 from openedx.core.djangoapps.password_policy import compliance as password_policy_compliance
 from openedx.core.djangoapps.password_policy.forms import PasswordPolicyAwareAdminAuthForm
-
-from ratelimitbackend import admin
+from openedx.core.openapi import schema_view
 
 django_autodiscover()
 admin.site.site_header = _('Studio Administration')