我需要从Django shell中执行一个Python脚本。我试着:
./manage.py shell << my_script.py
但这并没有起作用。它只是在等我写点什么。
我需要从Django shell中执行一个Python脚本。我试着:
./manage.py shell << my_script.py
但这并没有起作用。它只是在等我写点什么。
当前回答
如果你正在使用虚拟环境,试试这个:-
Python manage.py shell
要使用这些命令,您必须在虚拟环境中。本用途:-
被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是我的网站名称,jango是我的虚拟环境名称
其他回答
我带着与OP相同的问题来到这里,而我恰恰在问题中的错误中找到了我最喜欢的答案,这在Python 3中也适用:
./manage.py shell <<EOF
import my_script
my_script.main()
EOF
如果你想在BG中更好地磨合:
nohup echo 'exec(open("my_script.py").read())' | python manage.py shell &
输出将在noup .out中
如果你想执行启动脚本(例如,导入一些django模型来与它们交互工作),并保持在django shell中:
PYTHONSTARTUP=my_script.py python manage.py shell
从django-extensions运行脚本
python manage.py runscript scripty.py
一个示例script.py来测试它:
from django.contrib.auth.models import User
print(User.objects.values())
提及地址:http://django-extensions.readthedocs.io/en/latest/command_extensions.html,记录地址:
python manage.py runscript --help
还有一个教程。
在Django 1.9.6和Django -extensions 1.6.7上测试。
@AtulVarma在不工作的接受答案下提供了一个非常有用的评论:
echo 'import myscript' | python manage.py shell