17

私は最近、さまざまなOS(Linux以外)でbowserの互換性をテストできるように、djangoプロジェクトで次のことを行うことに慣れています。

$ 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

正常に動作します。私がここでしているのは、ポートを変更することだけですよね?そしてもちろん、過去にはうまく機能していました。

注意
1.Django1.4を 使用
しています。2。virtualenv内およびシステムで試しましたが、同じ結果が得られました。
3.システム全体にdjangoをインストールしていません(virtualenvsのみ)

どんな助けでも大歓迎です。

4

5 に答える 5

31

sudoコマンドはスーパーユーザーコンテキストでプロセスを実行し、スーパーユーザーコンテキストにはvirtualenv設定がないようです。

たとえば、virtualenvでPythonバイナリを明示的に呼び出そうとする場合があります。

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ます。

于 2012-09-21T00:07:19.267 に答える
8

シェルスクリプトを作成する代わりに、コマンドで使用するPython実行可能ファイルを指定するだけの別の解決策を次に示します。

virtualenvコンテナーが呼び出され、その中.virtualenvsにenvが呼び出さmyprojectれているとすると、これは次のように記述する必要があるコマンドです。

$ sudo ~/.virtualenvs/myproject/bin/python manage.py runserver 0.0.0.0:80
于 2016-03-31T12:13:34.913 に答える
1

@Paulo_Scardineの回答に基づいて構築:

virtualenv環境変数を保持する場合は、コマンドに-Eオプションを追加できます。sudo

sudo -E $(which python) manage.py runserver 0.0.0.0:80
于 2021-01-25T23:31:00.720 に答える
0

シェルスクリプトを作成する代わりに、コマンドで使用するPython実行可能ファイルを指定するだけの別の解決策を次に示します。

virtualenvコンテナがプロジェクトのホームディレクトリでvenvと呼ばれていると仮定すると、これは次のように記述しなければならないコマンドです。

sudo /home/mahome/PycharmProjects/sampleproject/venv/bin/python manage.py runserver 127.0.1.1:80
于 2021-04-22T12:43:15.527 に答える
-1


manage.py runserver0.0.0.0:8000ieを実行します

URLにアクセスしている間、デフォルトのポート80ではなく別のポートでサーバーを実行し、ポート番号を使用します

于 2014-08-13T09:20:49.760 に答える