diff --git a/contrib/internal/prepare-dev.py b/contrib/internal/prepare-dev.py
index f3722011e93fb06bdcc3eeb12b5f9c520152014d..d4ee8fce13440521e6a9807d8027ef7b1be1fb75 100755
--- a/contrib/internal/prepare-dev.py
+++ b/contrib/internal/prepare-dev.py
@@ -109,10 +109,13 @@ def main():
     # Insert the current directory first in the module path so we find the
     # correct reviewboard package.
     sys.path.insert(0, os.getcwd())
-    from reviewboard.cmdline.rbsite import Site
+    from reviewboard.cmdline.rbsite import Site, ConsoleUI
 
     parse_options(sys.argv[1:])
 
+    import reviewboard.cmdline.rbsite
+    reviewboard.cmdline.rbsite.ui = ConsoleUI()
+
     # Re-use the Site class, since it has some useful functions.
     site = Site("reviewboard", SiteOptions)
 
diff --git a/reviewboard/cmdline/rbsite.py b/reviewboard/cmdline/rbsite.py
index f008c375b1f9d8672fed55873d8ca11057006a08..589a247213178109db4943f4624f7d6b7141a8a9 100755
--- a/reviewboard/cmdline/rbsite.py
+++ b/reviewboard/cmdline/rbsite.py
@@ -569,8 +569,11 @@ class Site(object):
         os.chdir(self.abs_install_dir)
 
         try:
-            from django.core.management import execute_manager, get_commands
-            import reviewboard.settings
+            from django.core.management import (execute_from_command_line,
+                                                get_commands)
+
+            os.environ.setdefault('DJANGO_SETTINGS_MODULE',
+                                  'reviewboard.settings')
 
             if not params:
                 params = []
@@ -599,7 +602,7 @@ class Site(object):
                         name = os.path.splitext(f)[0]
                         _commands[name] = module_globals['Command']()
 
-            execute_manager(reviewboard.settings, [__file__, cmd] + params)
+            execute_from_command_line([__file__, cmd] + params)
         except ImportError as e:
             ui.error("Unable to execute the manager command %s: %s" %
                      (cmd, e))
