2012-09-20 67 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