8

この質問: Django シェルの起動時にモデルを自動的にインポートする には、shell_plus を使用して開始時にモデルをインポートする方法を説明する回答がありますが、一般的なコードの実行方法に関する回答はありません。

しかし、Pythonスクリプトを実行する簡単な方法はありますか?

python manage.py shell [or shell_plus] --run=script.py

シェルの起動時にすべてを入力したかのように、スクリプトを実行するだけです。

シェルにインポートできることはわかっていますが、それらは名前空間内でスタックしています。

ipython にはスクリプトを実行する方法が必要であり、それlocals()をトップレベルの名前空間にインポートする必要があると思います。その場合、あなたはそれを行うことができ%magic script.py、私たちはたった 1 つのステップで済みます。これは良いことです。

シェルの起動方法を変更しても問題ありません。主な目標は、シェルの起動時に実行されるファイルを作成できるようにすることです。

4

4 に答える 4

4

これまでと同じように、独自のカスタムコマンドを作成できます。コマンドのソースshell_plus参照して、その方法を確認してください。そのコードでは、シェルを開始する前に実行する必要のあるファイルを指定して実行できます。カスタムコマンドの作成に関するDjangoのドキュメントも役立ちます。shell_plus

于 2012-07-16T08:18:28.160 に答える
2

shell_plus は、起動と構成を処理しない制限された形式の IPython を使用します。これにより、django + ipython シェルの起動時に実行しようとするほとんどの通常の試みが無効になります。ほとんどの問題を解決するフルバージョンを使用するように切り替えることができます。

django_extensions/management/commands/shell_plus.py を修正

削除する:

embed(user_ns=imported_objects)

そしてそれを次のように置き換えます:

from IPython import start_ipython
start_ipython(argv=[], user_ns=imported_objects)

次に、スタートアップ ディレクトリにある Python コードが読み込まれます。

于 2014-03-26T09:16:48.263 に答える
2

環境変数 PYTHONSTARTUP の使用を試すことができます。django-extensions も試してください: django-extensions

django-extensions/management/commands/shell_plus.py コマンドを参照してください。

このコマンドのソース コードから、PYTHONSTARTUP 環境変数を尊重していることがわかります。

于 2012-07-16T09:16:19.457 に答える
1

使用できるフラグがあるかどうかはわかりませんが、ipython がインストールされている場合は、次のように単純なはずです。

ipython

次に、プロンプトが表示されたら:

run script.py

それで:

run manage.py shell

于 2012-07-16T07:05:16.880 に答える