text: #!/usr/bin/env python
  
  import os
  
  def exec_statement(stat):
      """Executes a Python statement in an externally spawned interpreter, and
      returns anything that was emitted in the standard output as a single string.
      """
  
      import os, tempfile, sys
  
      fnm = tempfile.mktemp()
      exe = sys.executable
  
      # Using "echo on" as a workaround for a bug in NT4 shell
      if os.name == "nt":
          cmd = 'echo on && "%s" -c "%s" > "%s"' % (exe, stat, fnm)
      else:
          cmd = '"%s" -c "%s" > "%s"' % (exe, stat, fnm)
  
      # Prepend PYTHONPATH with pathex
      pp = os.pathsep.join(sys.pathex)
      old_pp = os.environ.get('PYTHONPATH', '')
      if old_pp:
          pp = os.pathsep.join([pp, old_pp])
      os.environ["PYTHONPATH"] = pp
      try:
          # Actually execute the statement
          os.system(cmd)
      finally:
          if old_pp:
              os.environ["PYTHONPATH"] = old_pp
          else:
              del os.environ["PYTHONPATH"]
  
      txt = open(fnm, 'r').read()[:-1]
      os.remove(fnm)
      return txt
  
  def qt4_plugins_dir():
      import os
      qt4_plugin_dirs = eval(exec_statement("from PyQt4.QtCore import QCoreApplication; app=QCoreApplication([]); print map(unicode,app.libraryPaths())"))
      if not qt4_plugin_dirs:
          print "E: Cannot find PyQt4 plugin directories"
          return ""
      for d in qt4_plugin_dirs:
          if os.path.isdir(d):
              return str(d)  # must be 8-bit chars for one-file builds
      print "E: Cannot find existing PyQt4 plugin directory"
      return ""
  def qt4_phonon_plugins_dir():
      import os
      qt4_plugin_dirs = eval(exec_statement("from PyQt4.QtGui import QApplication; app=QApplication([]); app.setApplicationName('pyinstaller'); from PyQt4.phonon import Phonon; v=Phonon.VideoPlayer(Phonon.VideoCategory); print map(unicode,app.libraryPaths())"))
      if not qt4_plugin_dirs:
          print "E: Cannot find PyQt4 phonon plugin directories"
          return ""
      for d in qt4_plugin_dirs:
          if os.path.isdir(d):
              return str(d)  # must be 8-bit chars for one-file builds
      print "E: Cannot find existing PyQt4 phonon plugin directory"
      return ""
  def babel_localedata_dir():
      return exec_statement("import babel.localedata; print babel.localedata._dirname")
  def mpl_data_dir():
      return exec_statement("import matplotlib; print matplotlib._get_data_path()")
  def qwt_numpy_support():
      return eval(exec_statement("from PyQt4 import Qwt5; print hasattr(Qwt5, 'toNumpy')"))
  def qwt_numeric_support():
      return eval(exec_statement("from PyQt4 import Qwt5; print hasattr(Qwt5, 'toNumeric')"))
  def qwt_numarray_support():
      return eval(exec_statement("from PyQt4 import Qwt5; print hasattr(Qwt5, 'toNumarray')"))
  
  def django_dottedstring_imports(django_root_dir):
      package_name = os.path.basename(django_root_dir)
      os.environ["DJANGO_SETTINGS_MODULE"] = "%s.settings" %package_name
      return eval(exec_statement("execfile(r'%s')" %os.path.join(os.path.dirname(__file__), "django-import-finder.py")))
  
  def find_django_root(dir):
      entities = os.listdir(dir)
      if "manage.py" in entities and "settings.py" in entities and "urls.py" in entities:
          return [dir]
      else:
          django_root_directories = []
          for entity in entities:
              path_to_analyze = os.path.join(dir, entity)
              if os.path.isdir(path_to_analyze):
                  dir_entities = os.listdir(path_to_analyze)
                  if "manage.py" in dir_entities and "settings.py" in dir_entities and "urls.py" in dir_entities:
                      django_root_directories.append(path_to_analyze)
          return django_root_directories
  