Выполнение скрипта Python из оболочки Django

Мне нужно выполнить скрипт Python из оболочки Django. Я пытался

./manage.py shell << my_script.py 

Но это не сработало. Это было просто любопытное ожидание, когда я что-то напишу.

  • Tensorflow считывает изображения с помощью меток
  • Пакетное приложение PyInstaller отлично работает в режиме консоли, сбой в режиме окна
  • Обратный запрос Django по последнему созданному объекту
  • Django не распознает путь MEDIA_URL?
  • Python distutils - кто-нибудь знает, как его использовать?
  • Случайное применение ошибки сегментации в функциях расширения python в c ++
  • Обновление большой базы данных sqlite в кусках
  • Отображать массив NumPy как постоянное обновление изображения с помощью Glumpy
  • 13 Solutions collect form web for “Выполнение скрипта Python из оболочки Django”

    << часть неверна, используйте < вместо:

     $ ./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_noargs(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 

    остальная часть вашего материала идет сюда ….

    runscript из 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_SETTINGS_MODULE переменных среды DJANGO_SETTINGS_MODULE . Это все, что нужно, чтобы настроить среду Django-shell.

    Это работает в Django> = 1.4

    Если IPython доступен ( pip install ipython ), то ./manage.py shell будет автоматически использовать свою оболочку, а затем вы можете использовать магическую команду %run :

     %run my_script.py 

    Обратите внимание: этот метод устарел для более поздних версий django! (> 1,3)

    Альтернативный ответ, вы можете добавить это в начало my_script.py

     from django.core.management import setup_environ import settings setup_environ(settings) 

    и выполните my_script.py только с помощью python в каталоге, где у вас есть settings.py но это немного взломано.

     $ python my_script.py 
     import os, sys, django os.environ["DJANGO_SETTINGS_MODULE"] = "settings" sys.path.insert(0, os.getcwd()) django.setup() 

    @AtulVarma предоставил очень полезный комментарий по неработающему принятому ответу :

     echo 'import myscript' | python manage.py shell 

    Что-то, что мне показалось интересным, это Django Scripts, который позволяет писать сценарии для запуска с помощью python manage.py. Более подробную информацию о реализации и структуре можно найти здесь: 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 – это мое имя веб-сайта, а jango – мое виртуальное имя

    django.setup (), похоже, не работает.

    также не требуется.

    это само по себе работало.

     import os, django, glob, sys, shelve os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myProject.settings") 
    Python - лучший язык программирования в мире.