[Fixed]-Django runserver error when specifying port

30๐Ÿ‘

โœ…

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.

๐Ÿ‘คPaulo Scardine

8๐Ÿ‘

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
๐Ÿ‘คxyres

1๐Ÿ‘

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
๐Ÿ‘คPablo Guerrero

0๐Ÿ‘

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 venv in your project home directory, this is command you have to write:

sudo /home/mahome/PycharmProjects/sampleproject/venv/bin/python manage.py runserver 127.0.1.1:80

-1๐Ÿ‘

Run
manage.py runserver 0.0.0.0:8000
ie. run the server in different port and not the default port 80
while accessing the url use the port number

๐Ÿ‘คK2A

Leave a comment