318

Django シェルから Python スクリプトを実行する必要があります。私は試した:

./manage.py shell << my_script.py

しかし、うまくいきませんでした。私が何かを書くのを待っていました。

4

23 に答える 23

485

<<部分が間違っています。代わりに次を使用し<てください。

$ ./manage.py shell < myscript.py

次のこともできます。

$ ./manage.py shell
...
>>> execfile('myscript.py')

python3の場合、使用する必要があります

>>> exec(open('myscript.py').read())
于 2013-05-31T09:13:21.933 に答える
266

-からそれを行うことはお勧めしません。shellこれは、django 環境からランダムなスクリプトを実際に実行するべきではないためです (ただし、これを回避する方法あります。他の回答を参照してください)。

これが複数回実行するスクリプトである場合は、カスタム コマンドとして設定することをお勧めします。

 $ ./manage.py my_command

managementこれを行うには、とのサブディレクトリにファイルを作成しcommandsますapp

my_app/
    __init__.py
    models.py
    management/
        __init__.py
        commands/
            __init__.py
            my_command.py
    tests.py
    views.py

このファイルでカスタムコマンドを定義します(ファイルの名前が実行元のコマンドの名前であることを確認してください./manage.py

from django.core.management.base import BaseCommand

class Command(BaseCommand):
    def handle(self, **options):
        # now do the things that you want with your models here
于 2013-05-31T09:10:48.557 に答える
119

Django 1.7 以降を使用している人にとっては、単に設定モジュールをインポートするだけでは十分ではないようです。

掘り下げた後、このスタックオーバーフローの回答を見つけました: https://stackoverflow.com/a/23241093

次のことを行う必要があります。

import os, django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
django.setup()
# now your code can go here...

上記を行わないと、django.core.exceptions.AppRegistryNoReadyエラーが発生しました。

スクリプト ファイルは、django プロジェクトと同じディレクトリにあります (つまり、manage.py と同じフォルダにあります)。

于 2014-06-27T16:14:14.990 に答える
72

私はパーティーに遅れましたが、私の応答が誰かの助けになることを願っています: Python スクリプトでこれを行うことができます:

import sys, os
sys.path.append('/path/to/your/django/app')
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from django.conf import settings

あなたのものの残りはここに行きます....

于 2013-10-17T12:27:33.103 に答える
13

IPythonが使用可能な場合( pip install ipython)、./manage.py shell自動的にそのシェルが使用され、魔法のコマンドを使用できます%run

%run my_script.py
于 2016-12-15T10:44:07.993 に答える
9

@AtulVarma は、機能していない受け入れられた回答の下で非常に役立つコメントを提供しました。

echo 'import myscript' | python manage.py shell
于 2016-11-03T13:03:36.380 に答える
8

DJANGO_SETTINGS_MODULE環境変数を設定してスクリプトを実行するだけです。以上で Django-shell 環境のセットアップは完了です。

これは Django >= 1.4 で動作します

于 2013-05-31T13:42:31.763 に答える
6

他の回答が示しているように、明示的には述べていませんが、実際に必要なのは、必ずしも Django シェルからスクリプトを実行することではなく、Django シェルを使用せずにアプリにアクセスすることです。

これは、Django のバージョンと Django のバージョンで大きく異なります。このスレッドで解決策が見つからない場合は、こちらの回答 ( manage.py シェルを使用せずにモデル オブジェクトにアクセスする Django スクリプト ) または同様の検索が役立つ場合があります。

my_command.py を開始する必要がありました

import os,sys
sys.path.append('/path/to/myproject')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.file")
import django
django.setup()

import project.app.models
#do things with my models, yay

そして走ったpython3 my_command.py

(ジャンゴ 2.0.2)

于 2018-02-21T21:31:04.500 に答える
1

スタートアップ スクリプトを実行し (たとえば、いくつかの django モデルをインポートして対話的に操作する)、django シェルのままにしたい場合:

PYTHONSTARTUP=my_script.py python manage.py shell
于 2020-03-02T14:16:51.940 に答える
0

django.setup() が機能していないようです。

も必要ないようです。

これだけでうまくいきました。

import os, django, glob, sys, shelve
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myProject.settings")
于 2014-09-15T20:12:28.510 に答える
0

私が興味深いと思ったのは、Django Scripts です。これにより、python manage.py runscript foobar で実行するスクリプトを作成できます。実装と構造の詳細については、http: //django-extensions.readthedocs.org/en/latest/index.html を参照してください。

于 2014-06-04T14:09:28.783 に答える
0

仮想環境を使用している場合は、これを試してください:-

python manage.py シェル

これらのコマンドを使用するには、仮想環境内にいる必要があります。この使用のために:-

workon vir_env_name

例えば ​​:-

dc@dc-comp-4:~/mysite$ workon jango
(jango)dc@dc-comp-4:~/mysite$ python manage.py shell
Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> 

:- ここで mysite は私の Web サイト名で、jango は私の仮想環境名です。

于 2015-01-22T12:46:47.723 に答える
0

パーティーに遅刻。しかし、これは誰かにとって役立つかもしれません。

必要なのはスクリプトとdjango-extensionsインストールだけです。

shell_plus利用可能な を実行してdjango_extensions、作成したスクリプトをインポートするだけです。

スクリプトがscpt.pyフォルダー内にあるfol場合は、次のようにスクリプトを実行できます。

python manage.py shell_plus

次のようにシェル内にスクリプトをインポートするだけです。

>>> from fol import scpt
于 2020-05-12T14:34:35.697 に答える