Python manage py shell как выйти

от admin

Как выйти из сервера разработки Django с помощью bash-скрипта?

Я написал bash-скрипт для запуска сервера разработки Django, однако я хочу иметь возможность выйти из сервера, пока он работает со bash-скриптом. Я пишу веб-приложение для Koding.com, которое запускает процесс Django в онлайн-терминале, связанном с персональной виртуальной машиной пользователя, путем запуска сценария bash нажатием кнопки, и я хочу, чтобы пользователи могли завершить процесс с помощью нажатием кнопки также. Я знаю, что контроль C завершит процесс, но я не смог выяснить, как это сделать в bash-скрипте. Как я мог сделать это? Спасибо!

ОБНОВЛЕНИЕ: я в конечном итоге объединил свой выбранный ответ на этот вопрос и этот ответ из другого вопроса, который я задал (как запускать команды unix в оболочке django), чтобы решить мою проблему: https://stackoverflow.com/a/22777849/2181017

3 ответа

Вы можете убить процесс прослушивания на 8000 / TCP:

Команда fuser показывает, какие процессы используют именованные файлы, сокеты или файловые системы, а опция -k также убивает их.

Подождите, просто чтобы уточнить, нет ли способа временно выйти из этой оболочки django, чтобы я мог запустить команду unix?

При запуске сервера разработки он будет работать на переднем плане, блокируя приглашение. Вы можете приостановить задачу, которая выполняется на переднем плане, нажав CTRL+Z , а затем отправить задачу в фоновый режим с помощью команды bg (я предполагаю, что вы используете оболочку bash или аналог). Команда jobs выводит список приостановленных задач или задач, работающих в фоновом режиме. Вы можете вывести задачу на передний план, используя команду fg .

Пожалуйста, обратитесь к man-странице bash ( man bash ).

Вы можете просто использовать CTRL+C для выхода из вашего сервера.
еще с системой Ubuntu вы можете сделать, как показано ниже.

Выход из командной строки python

обычно при вводе exit , вы хотели бы выйти из программы. Почему интерпретатор дает мне вышеуказанную ошибку, когда он знает, что я пытаюсь выйти из командной строки? Почему он просто не уходит? Я знаю, что это не имеет значения, и это глупый вопрос, но мне любопытно.

10 ответов

при вводе exit в командной строке, он находит переменную с таким именем и называет __repr__ (или __str__ ) на нем. Обычно, вы получите результат, как:

но они решили переопределить эту функцию для exit объект для отображения полезного сообщения. Является ли это глупым поведением или нет, это субъективный вопрос, но одна из возможных причин, почему он не «просто выходит»:

Предположим, вы смотрите на какой-то код в отладчике, для экземпляр, и один из объектов ссылается на

Это работает для меня, лучший способ выйти из подсказки python.

Я рекомендую вам выйти из интерпретатора Python с помощью Ctrl-D. Это старый код ASCII для конца файла или конца передачи.

это сообщение на exit

посмотрите на эти примеры :

поскольку интерпретатор не является оболочкой, в которой вы предоставляете команды, это — ну-интерпретатор. То, что вы ему даете, — это код Python.

синтаксис Python таков, что exit само по себе не может быть никем иным, кроме названия объекта. Просто ссылка на объект не может ничего сделать (кроме того, что обычно делает цикл read-eval-print; т. е. отображать строковое представление объекта).

в моем интерпретаторе python exit на самом деле строка, а не функция — ‘Use Ctrl-D (i.e. EOF) to exit.’ . Вы можете проверить своего переводчика, введя type(exit)

в активном python происходит то, что exit является функцией. Если вы не вызовете функцию, она распечатает строковое представление объекта. Это поведение по умолчанию для любого возвращаемого объекта. Просто дизайнеры подумали, что люди могут попытаться ввести exit для выхода из интерпретатора, поэтому они сделали строку представление функции exit полезное сообщение. Вы можете проверить это поведение, введя str(exit) или даже print exit .

вы можете это исправить.

ссылке PYTHONSTARTUP в файл python со следующим

как это работает?

командная строка python-это цикл чтения-оценки-печати, то есть при вводе текста он будет читать этот текст, оценивать его и в конечном итоге печатать результат.

при вводе exit() он оценивает вызываемый объект типа site.Quitter и называет его __call__ функция, которая выходит из системы. Когда вы печатаете exit он оценивает тот же вызываемый объект, не вызывая его, объект печатается, который в свою очередь вызывает __repr__ на объект.

мы можем воспользоваться этим путем связывания __repr__ to __call__ и таким образом получить ожидаемое поведение выхода из sustem, даже когда мы вводим exit без скобок.

Читать:
Как сделать калькулятор в блокноте

на выезд из терминал Python, просто:

Пожалуйста, обратите внимание, что это функция, которая называется, как большинство пользователей смешать его с выходом без вызова, но новый Pyhton терминал показать сообщение.

или в качестве ярлыка нажмите:

Если вы застряли в командной строке python, и ни одно из вышеперечисленных решений не сработало для вас, попробуй!—0—>

«exit» — это допустимое имя переменной, которое может использоваться в вашей программе Python. Вы не захотите выходить из интерпретатора, когда вы просто пытаетесь увидеть значение этой переменной.

Django
Команды управления

Команды управления — это мощные и гибкие скрипты, которые могут выполнять действия в вашем проекте Django или в базе данных. В дополнение к различным командам по умолчанию можно писать самостоятельно!

По сравнению с обычными сценариями Python, использование фреймворка командной консоли означает, что некоторые утомительные работы по настройке автоматически выполняются для вас за кулисами.

замечания

Команды управления могут быть вызваны либо из:

  • django-admin <command> [options]
  • python -m django <command> [options]
  • python manage.py <command> [options]
  • ./manage.py <command> [options] если у manage.py есть разрешения на выполнение ( chmod +x manage.py )

Чтобы использовать команды управления с помощью Cron:

Создание и запуск команды управления

Для выполнения действий в Django с использованием командной строки или других служб (где пользователь / запрос не используется), вы можете использовать management commands .

Модули Django могут быть импортированы по мере необходимости.

Для каждой команды необходимо создать отдельный файл: myapp/management/commands/my_command.py
(Каталоги management и commands должны иметь пустой файл __init__.py)

Здесь обязателен класс name Command, который расширяет BaseCommand или один из его подклассов.

Имя команды управления — это имя файла, содержащего его. Чтобы запустить команду в приведенном выше примере, используйте следующую команду в каталоге проекта:

Обратите внимание, что запуск команды может занять несколько секунд (из-за импорта модулей). Поэтому в некоторых случаях рекомендуется создавать процессы daemon вместо management commands .

Получить список существующих команд

Вы можете получить список доступных команд следующим образом:

Если вы не понимаете какую-либо команду или ищете дополнительные аргументы, вы можете использовать аргумент -h, как это

Здесь command_name будет вашим именем команды желания, это покажет вам текст помощи из команды.

Использование django-admin вместо manage.py

Вы можете избавиться от manage.py и вместо этого использовать команду django-admin . Для этого вам нужно вручную сделать то, что manage.py делает:

  • Добавьте свой путь к вашему PYTHONPATH
  • Установите DJANGO_SETTINGS_MODULE

Это особенно полезно в virtualenv, где вы можете установить эти переменные среды в сценарии postactivate .

Преимущество команды django-admin в том, что вы находитесь там, где находитесь в своей файловой системе.

Встроенные команды управления

Django поставляется с несколькими встроенными командами управления, используя python manage.py [command] или, когда у manage.py есть + x (исполняемые) права просто ./manage.py [command] . Ниже приведены некоторые из наиболее часто используемых:

Получить список всех доступных команд

Запустите сервер Django на localhost: 8000; необходимо для локального тестирования

Запустите консоль python (или ipython if installed) с предустановленными настройками Django вашего проекта (попытка получить доступ к частям вашего проекта на терминале python без этого не удастся).

Создайте новый файл миграции базы данных на основе изменений, внесенных вами в ваши модели. См. Миграции

Примените любые непримененные миграции к текущей базе данных.

Запустите тестовый пакет вашего проекта. См. Unit Testing

Возьмите все статические файлы вашего проекта и STATIC_ROOT их в папку, указанную в STATIC_ROOT чтобы их можно было подавать на производство.

How to reload Django shell without restarting?

Arghya Saha

How to reload Django shell without restarting?

Photo by Tine Ivanič / Unsplash

Django shell is perhaps the first place where developers test their code and verify all the functionality. But we generally don't develop the whole code in the shell. most of the time we copy-paste the whole function and execute. Though this way of development is perfect for say 20-30 lines maximum, we struggle when the number of lines increases.

All of us would have always wanted to what if we could reload the content of the .py files which we recently updated in the IDE without exiting the existing shell. The solution to this problem becomes much easier. When you use ipython , IPython is a great interactive shell which is a great alternative to the regular python shell.

Let us see how we can reload Django code without restarting the whole shell.

Похожие статьи