我需要从Django shell中执行一个Python脚本。我试着:

./manage.py shell << my_script.py

但这并没有起作用。它只是在等我写点什么。


当前回答

如果你想在BG中更好地磨合:

nohup echo 'exec(open("my_script.py").read())' | python manage.py shell &

输出将在noup .out中

其他回答

其实很简单,只要你打开django shell Python manage.py shell然后简单的写import test来导入test.py

# test.py
def x():
  print('hello');

现在您可以执行该文件中的命令

test.x() //  will print hello

首先检查你的文件。

py manage.py

如果显示您的文件

[contracts]
category_load

现在您可以通过输入powershell(terminal)来运行.py文件

py manage.py category_load

从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上测试。

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