Как запустить оболочку django с ipython в режиме qtconsole?
Когда я запускаю оболочку django, набрав python manage.py shell
запущена оболочка ipython. Можно ли запустить Django ipython в режиме qtconsole? (т.е. запустите его ipython qtconsole
)
Arek
изменить:
поэтому я пробую то, что предложил Эндрю Уилкинсон в своем ответе - расширение моего приложения django с помощью команды, основанной на исходной команде оболочки django. Насколько я понимаю, код, который запускает ipython в оригинальной версии, таков:
from django.core.management.base import NoArgsCommand
class Command(NoArgsCommand):
requires_model_validation = False
def handle_noargs(self, **options):
from IPython.frontend.terminal.embed import TerminalInteractiveShell
shell = TerminalInteractiveShell()
shell.mainloop()
любой совет, как изменить этот код, чтобы запустить ipython в режиме qtconsole?
второе редактирование:
то, что я нашел и работает до сих пор, - это запустить "ipython qtconsole" из того места, где settings.py моего проекта (или установить sys.path, если он начинается с другого места), а затем выполнить это:
import settings
import django.core.management
django.core.management.setup_environ(settings)
и теперь я могу импортировать свои модели, перечислить все экземпляры и т.д.
Ответы
Ответ 1
Я создал оболочку script со следующим:
/path/to/ipython
qtconsole --pylab inline -c "run /path/to/my/site/shell.py"
Вам нужна только часть --pylab inline
, если вы хотите использовать крутые линейные графики matplotlib.
И я создал python script shell.py
в /path/to/my/site
с помощью:
import os
working_dir = os.path.dirname(__file__)
os.chdir(working_dir)
import settings
import django.core.management
django.core.management.setup_environ(settings)
Запуск моей оболочки script получает мне ipton qtconsole с преимуществами оболочки django.
Ответ 2
Документы здесь говорят:
Если вы не хотите использовать manage.py, никаких проблем. Просто установите Переменная среды DJANGO_SETTINGS_MODULE в mysite.settings и запуск python из того же каталога manage.py находится в (или убедитесь, что каталог находится на пути Python, так что импорт mysite работает).
Поэтому достаточно установить эту переменную среды, а затем запустить ipython qtconsole
. Вы можете сделать простой script, чтобы сделать это для вас автоматически.
Ответ 3
Вы можете проверить код, который запускает оболочку здесь. Вы увидите, что нет настройки для настройки оболочки.
Что вы можете сделать, это скопировать этот файл, переименовать его как shell_qt.py и поместить его в свой собственный каталог управления проектами/команд. Измените его, чтобы запустить консоль QT, а затем вы можете запустить manage.py shell_qt
.
Ответ 4
Так как версия Django 1.4, использование django.core.management.setup_environ()
устарело. Это решение, которое работает как для ноутбука IPython, так и для QTconsole, это (просто выполните это из каталога проектов Django):
In [1]: from django.conf import settings
In [2]: from mydjangoproject.settings import DATABASES as MYDATABASES
In [3]: settings.configure(DATABASES=MYDATABASES)
Обновление: Если вы работаете с Django 1.7, вам также необходимо выполнить следующее:
In [4]: import django; django.setup()
Используя django.conf.settings.configure()
, вы указываете параметры базы данных своего проекта, а затем вы можете получить доступ ко всем вашим моделям обычным способом.
Если вы хотите автоматизировать этот импорт, вы можете, например, создайте профиль IPython, выполнив:
ipython profile create mydjangoproject
Каждый профиль содержит каталог с именем startup
. Вы можете разместить произвольные скрипты Python там, и они будут выполнены сразу после запуска IPython. В этом примере вы найдете его под
~/.ipython/profile_<mydjangoproject>/startup/
Просто поместите здесь script, который содержит код, показанный выше, вероятно, заключенный в предложение try..except
для обработки ImportError
s. Затем вы можете запустить IPython с заданным профилем следующим образом:
ipython qtconsole --profile=mydjangoproject
или
ipython notebook --profile=mydjangoproject
Ответ 5
Вы можете установить расширения django, а затем запустите
python manage.py shell_plus --ipython
Ответ 6
Я также хотел открыть оболочку Django в qtconsole. Заглянув внутрь manage.py, решите проблему для меня:
Запустите IPython qtconsole, cd в базовый каталог проекта и запустите:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")
Не забудьте изменить "myproject" на ваше имя проекта.
Ответ 7
Вы можете создать команду, которая расширяет базовую команду оболочки и импортирует IPythonQtConsoleApp, например:
создайте файл qtshell.py в файле yourapp/management/commands с помощью
from django.core.management.commands import shell
class Command(shell.Command):
def _ipython(self):
"""Start IPython Qt console"""
from IPython.qt.console.qtconsoleapp import IPythonQtConsoleApp
app = IPythonQtConsoleApp.instance()
app.initialize(argv=[])
app.start()
то просто используйте python manage.py qtshell