指定端口时出现Django runserver错误

时间:2012-09-20 20:51:17

标签: django

我最近已习惯在我的django项目中执行以下操作,以便我可以在各种操作系统(即非Linux)上测试bowser兼容性:

$ 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

运行良好。我在这里所做的一切都在改变港口吗?当然,它在过去运作良好。

N.B。
1.我正在使用Django 1.4
2.我在virtualenv和系统中尝试过,我得到了相同的结果 3.我没有在系统范围内安装django(仅限于virtualenvs)

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:22)

我猜sudo命令将在超级用户上下文中运行该进程,而超级用户上下文缺少virtualenv设置。

您可以尝试显式调用virtualenv中的python二进制文件,例如:

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

创建一个shell脚本来设置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替换为项目的根目录。

答案 1 :(得分:7)

这是另一个解决方案,而不是创建shell脚本,只需在命令中指定要使用的python可执行文件:

假设你的virtualenv容器被称为.virtualenvs并且其中有一个名为myproject的env,这是你必须写的命令:

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

答案 2 :(得分:0)

基于@Paulo_Scardine 的回答:

如果要保留 virtualenv 环境变量,可以在 -E 命令中添加 sudo 选项:

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

答案 3 :(得分:0)

这是另一种解决方案,无需创建shell脚本,只需在命令中指定要使用的python可执行文件即可:

假设你的 virtualenv 容器在你的项目主目录中被称为 venv,这是你必须编写的命令:

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

答案 4 :(得分:-1)

运行
manage.py runserver 0.0.0.0:8000
即。在不同的端口运行服务器而不是默认端口80
访问网址时使用端口号