2012-09-20 8 views
12

を指定するとき、私は様々なOS上でクッパとの互換性をテストすることができるように、私は最近、(つまり、Linux以外)私のDjangoのプロジェクトで以下を実行することに慣れている: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のPythonのバイナリを呼び出すしようがあります

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

virtualenvのを設定し、その代わりにsudoその後、このスクリプトを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 

実際にvirtualenvとプロジェクトのルートと/path/to/project/fooのルートで/home/darwin/.virtualenvs/fooを交換してください。

+0

sudoを使うとあなたのローカル環境のpythonは使われず、システムのデフォルトPython(必要なパッケージが紛失する可能性があります) –

+1

@RishabhAgrahari確かに、回答が更新されました –

0

実行
manage.py runserver 0.0.0.0:8000
ie。 URLにアクセスしているときに、ポート番号

6

を使用する80
デフォルトポート別のポートではなく、サーバーを実行すると、ここでは別の解決策はちょうどあなたがコマンドで使用したいのpythonの実行を指定し、代わりにシェルスクリプトを作成するのではなく、です。

あなたのvirtualenvのコンテナが.virtualenvsと呼ばれ、ENVはそれでmyprojectが呼ばれていますと仮定すると、これはあなたが書かなければならないコマンドです:

$ sudo ~/.virtualenvs/myproject/bin/python manage.py runserver 0.0.0.0:80 
関連する問題