Ошибка при запуске Django при указании порта

Недавно я привык делать следующее в своих проектах django, чтобы я мог проверить совместимость баузеров на разных ОС (то есть не linux):

$ sudo ./manage.py runserver 0.0.0.0:80

Это позволяет мне получить доступ к проекту через любую машину в сети.

Однако я просто установил новую машину, и эта команда выдает следующую ошибку:

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

Я понимаю, что у django возникают проблемы с поиском модуля, я не понимаю, что это простой старый:

$ sudo ./manage.py runserver

Хорошо работает. Все, что я здесь делаю, меняет порт, конечно? И, конечно же, в прошлом это прекрасно работало.

NB
1. Я использую Django 1.4
2. Я попытался в virtualenv и в системе, и я получаю тот же результат.
3. У меня нет установленной системы django (только в virtualenvs)

Любая помощь приветствуется.

Ответ 1

Я предполагаю, что команда sudo будет запускать процесс в контексте суперпользователя, а в контексте суперпользователя отсутствуют настройки virtualenv.

Вы можете попытаться вызвать двоичный код python в вашем virtualenv явно, например:

sudo $(which python) manage.py runserver 0.0.0.0:80

Создайте сценарий оболочки, чтобы установить virtualenv и вызвать manage.py runserver, затем sudo вместо этого скрипта.

#!/bin/bash
source /home/darwin/.virtualenvs/foo/bin/activate
cd /path/to/project/foo
python manage.py runserver 0.0.0.0:80

Замените /home/darwin/.virtualenvs/foo корень вашего фактического virtualenv и /path/to/project/foo с корнем вашего проекта.

Ответ 2

Здесь другое решение, вместо создания сценария оболочки, просто укажите, какой исполняемый файл python вы хотите использовать в команде:

Предполагая, что ваш виртуальный контейнер называется .virtualenvs и там env называется myproject в нем, это команда, которую вы должны написать:

$ sudo ~/.virtualenvs/myproject/bin/python manage.py runserver 0.0.0.0:80

Ответ 3

Бег
manage.py runningerver 0.0.0.0:8000
то есть. запустите сервер в другом порту, а не по умолчанию порт 80
при доступе к URL-адресу используйте номер порта