I have recently become accustomed to doing the following in my django projects so that I can test bowser compatibility on various OS (i.e. non-linux):
$ sudo ./manage.py runserver 0.0.0.0:80
This allows me to access the project through any machine on the network.
However, I just setup a new machine and this command issues the following error:
Traceback (most recent call last):
File "manage.py", line 8, in <module>
from django.core.management import execute_from_command_line
ImportError: No module named django.core.management
I understand that django is having trouble finding the module, what I don’t understand is that plain old:
$ sudo ./manage.py runserver
Runs fine. All I am doing here is changing the port, surely? And, of course, it worked fine in the past.
N.B.
1. I am using Django 1.4
2. I have tried within a virtualenv and on system and I get the same result.
3. I do not have django installed system wide (just in virtualenvs)
Any help would be much appreciated.
I guess the sudo command will run the process in the superuser context, and the superuser context lack virtualenv settings.
You may try to call the python binary at your virtualenv explicitly, for example:
Make a shell script to set the virtualenv and call
manage.py runserver, then sudo this script instead.Replace
/home/darwin/.virtualenvs/foowith the root of your actual virtualenv and/path/to/project/foowith the root of your project.