Django runserver error when specifying port
Building upon @Paulo_Scardine's anwser:
If you want to keep your virtualenv environment variables, you can add the -E
option to the sudo
command:
sudo -E $(which python) manage.py runserver 0.0.0.0:80
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:
sudo $(which python) manage.py runserver 0.0.0.0:80
Make a shell script to set the virtualenv and call manage.py runserver
, then sudo this script instead.
#!/bin/bash
source /home/darwin/.virtualenvs/foo/bin/activate
cd /path/to/project/foo
python manage.py runserver 0.0.0.0:80
Replace /home/darwin/.virtualenvs/foo
with the root of your actual virtualenv and /path/to/project/foo
with the root of your project.
Here's another solution, instead of creating shell script, just specify which python executable you want to use in the command:
Assuming that your virtualenv container is called .virtualenvs
and there's an env called myproject
in it, this is command you have to write:
$ sudo ~/.virtualenvs/myproject/bin/python manage.py runserver 0.0.0.0:80