我需要从Django shell中执行一个Python脚本。我试着:
./manage.py shell << my_script.py
但这并没有起作用。它只是在等我写点什么。
我需要从Django shell中执行一个Python脚本。我试着:
./manage.py shell << my_script.py
但这并没有起作用。它只是在等我写点什么。
当前回答
如果你想执行启动脚本(例如,导入一些django模型来与它们交互工作),并保持在django shell中:
PYTHONSTARTUP=my_script.py python manage.py shell
其他回答
如果IPython可用(pip install IPython),那么./manage.py shell将自动使用它的shell,然后你可以使用神奇的命令%run:
%run my_script.py
@AtulVarma在不工作的接受答案下提供了一个非常有用的评论:
echo 'import myscript' | python manage.py shell
注意,这个方法在django的最新版本中已经被弃用了!(> 1.3)
另一个答案是,您可以将它添加到my_script.py的顶部
from django.core.management import setup_environ
import settings
setup_environ(settings)
然后用python在settings。py目录下执行my_script.py,但这有点棘手。
$ python my_script.py
我带着与OP相同的问题来到这里,而我恰恰在问题中的错误中找到了我最喜欢的答案,这在Python 3中也适用:
./manage.py shell <<EOF
import my_script
my_script.main()
EOF
另一种方式是执行这个
echo 'execfile("/path_to/myscript.py")' | python manage.py shell --settings=config.base
它在Python2.7和Django1.9上运行