import sys, re, os import django def ModuleList(): ret = [] dir_project = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) project_name = os.path.basename(dir_project) for k,v in sys.modules.items(): x = str(v) if 'built-in' in x: ret.append((k, 'built-in')) continue m = re.search(r"^.*?'(?P.*?)' from '(?P.*?)'.*$", x) if m: d = m.groupdict() f = d['file'] f = re.sub(r'/usr/.*?/lib/python[.0-9]*/site-packages/django/', 'system django >> ', f) f = re.sub(r'/usr/.*?/lib/python[.0-9]*/site-packages/', 'site-packages >> ', f) f = re.sub(r'/usr/.*?/lib/python[.0-9]*/', 'system python >> ', f) f = re.sub(dir_project+'.*python/', 'local python >> ', f) f = re.sub(dir_project+'.*django/', 'local django >> ', f) f = re.sub(dir_project+r'(/\.\./)?', project_name + ' >> ', f) ret.append((d['module'], f)) ret.sort( lambda a,b: cmp(a[0].lower(), b[0].lower()) ) ret.insert(0, ('Python version', sys.version) ) ret.insert(0, ('Django version', django.get_version()) ) return ret # ModuleList if __name__ == "__main__": for x in ModuleList(): print "%s\t%s" % (x[0], x[1])