Django シェルから Python スクリプトを実行する必要があります。私は試した:
./manage.py shell << my_script.py
しかし、うまくいきませんでした。私が何かを書くのを待っていました。
Django シェルから Python スクリプトを実行する必要があります。私は試した:
./manage.py shell << my_script.py
しかし、うまくいきませんでした。私が何かを書くのを待っていました。
<<
部分が間違っています。代わりに次を使用し<
てください。
$ ./manage.py shell < myscript.py
次のこともできます。
$ ./manage.py shell
...
>>> execfile('myscript.py')
python3の場合、使用する必要があります
>>> exec(open('myscript.py').read())
-からそれを行うことはお勧めしません。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
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 と同じフォルダにあります)。
私はパーティーに遅れましたが、私の応答が誰かの助けになることを願っています: Python スクリプトでこれを行うことができます:
import sys, os
sys.path.append('/path/to/your/django/app')
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from django.conf import settings
あなたのものの残りはここに行きます....
@AtulVarma は、機能していない受け入れられた回答の下で非常に役立つコメントを提供しました。
echo 'import myscript' | python manage.py shell
DJANGO_SETTINGS_MODULE
環境変数を設定してスクリプトを実行するだけです。以上で Django-shell 環境のセットアップは完了です。
これは Django >= 1.4 で動作します
他の回答が示しているように、明示的には述べていませんが、実際に必要なのは、必ずしも 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)
スタートアップ スクリプトを実行し (たとえば、いくつかの django モデルをインポートして対話的に操作する)、django シェルのままにしたい場合:
PYTHONSTARTUP=my_script.py python manage.py shell
django.setup() が機能していないようです。
も必要ないようです。
これだけでうまくいきました。
import os, django, glob, sys, shelve
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myProject.settings")
私が興味深いと思ったのは、Django Scripts です。これにより、python manage.py runscript foobar で実行するスクリプトを作成できます。実装と構造の詳細については、http: //django-extensions.readthedocs.org/en/latest/index.html を参照してください。
仮想環境を使用している場合は、これを試してください:-
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 は私の仮想環境名です。
パーティーに遅刻。しかし、これは誰かにとって役立つかもしれません。
必要なのはスクリプトとdjango-extensions
インストールだけです。
shell_plus
利用可能な を実行してdjango_extensions
、作成したスクリプトをインポートするだけです。
スクリプトがscpt.py
フォルダー内にあるfol
場合は、次のようにスクリプトを実行できます。
python manage.py shell_plus
次のようにシェル内にスクリプトをインポートするだけです。
>>> from fol import scpt