2012-09-20 68 views
12

当我最近已经习惯了做我的Django项目下面,这样我可以测试各种OS鲍泽兼容性(即非Linux):的Django的runserver错误指定端口

$ sudo ./manage.py runserver 0.0.0.0:80 

这让我通过网络上的任何机器访问该项目。

不过,我只是设置一个新的机器和该命令发出以下错误:

据我所知,Django是很难找到的模块,我不明白的是,普通的老:

$ sudo ./manage.py runserver 

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

N.B.
1.我正在使用Django 1.4
2.我尝试了一个virtualenv和系统,我得到了同样的结果。
3.我没有安装系统django(只在virtualenvs)

任何帮助将不胜感激。

+0

我不知道究竟为什么不起作用。如果你运行'./manage.py runserver 0.0.0.0:8000'(即没有sudo的端口> 1024),它会起作用 – Eli

+0

我在系统上遇到同样的错误,并且在virtualenv中出现以下错误:'错误: '没有权限访问那个端口。' –

+0

如果你明确地用python调用它,它会工作吗:'python manage.py runserver 0.0.0.0:8000' –

回答

18

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

您可以尝试在你的virtualenv明确调用蟒蛇二进制,例如:

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

做一个shell脚本来设置的virtualenv并调用manage.py runserver,然后须藤这个脚本来代替。

#!/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与项目的根。

+0

请注意,使用sudo不会使用您本地环境的python,而是使用您系统的默认值蟒蛇(你可能会想念你所需的软件包) –

+1

@RishabhAgrahari确实,回答更新 –

0

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

6

这里的另一种解决方案,而不是创建shell脚本,只需指定Python可执行程序要在命令的使用方法:

假设你的virtualenv容器称为.virtualenvs并有一个名为myproject在它的包膜,这是你必须写命令:

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