Django cannot import name urandom
August 14, 2012
I recently tried to spin up a local django server and was confronted with the following error:
$ ./manage.py runserver Traceback (most recent call last): File "./manage.py", line 16, in <module> execute_manager(settings) File "/home/tjs/web/bbr/django/core/management/__init__.py", line 438, in execute_manager utility.execute() File "/home/tjs/web/bbr/django/core/management/__init__.py", line 379, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/tjs/web/bbr/django/core/management/__init__.py", line 261, in fetch_command klass = load_command_class(app_name, subcommand) File "/home/tjs/web/bbr/django/core/management/__init__.py", line 67, in load_command_class module = import_module('%s.management.commands.%s' % (app_name, name)) File "/home/tjs/web/bbr/django/utils/importlib.py", line 35, in import_module __import__(name) File "/home/tjs/web/bbr/django/core/management/commands/runserver.py", line 8, in <module> from django.core.handlers.wsgi import WSGIHandler File "/home/tjs/web/bbr/django/core/handlers/wsgi.py", line 10, in <module> from django import http File "/home/tjs/web/bbr/django/http/__init__.py", line 122, in <module> from django.utils.http import cookie_date File "/home/tjs/web/bbr/django/utils/http.py", line 7, in <module> from email.Utils import formatdate File "/usr/lib/python2.7/email/__init__.py", line 79, in __getattr__ __import__(self.__name__) File "/usr/lib/python2.7/email/utils.py", line 27, in <module> import random File "/usr/lib/python2.7/random.py", line 47, in <module> from os import urandom as _urandom ImportError: cannot import name urandom
This is caused by attempting to run a python 2.7.2 binary against python 2.7.3 libraries.
To fix this, remove the python symlink from your virtualenv (probably ~/.virtualenvs/ENV_NAME/bin/python
) and then regenerate the virtualenv from the command line:
$ mkvirtualenv ENV_NAME New python executable in ENV_NAME/bin/python Installing setuptools.............done. Installing pip...............done.