Подтвердить что ты не робот

Почему Django не использует IPython?

(myvenv)me:src orokusaki$ python manage.py shell -i ipython
Python 2.7.2 (default, Jun 16 2012, 12:38:40) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> while True:
...     pass  # :(
...

У меня IPython установлен глобально, и он работает, пока этот myvenv virtualenv активирован просто отлично. Однако, если я запускаю оболочку Django (с или без -i), она не будет использовать IPython. Раньше у меня никогда не было этой проблемы.

Примечание: django-admin.py vs manage.py не будет иметь значения.

4b9b3361

Ответ 1

Попробуйте установить его в virtualenv!: -)

Ответ 2

Мне нравится iPython, но мне не нравится устанавливать его во всех моих виртуальных виртуальных машинах, и я нашел хорошее решение для этого. Вместо использования python manage.py shell вы можете просто использовать систему iPython напрямую.

Чтобы это работало правильно, вам нужно установить DJANGO_SETTINGS_MODULE, чтобы он соответствовал вашему проекту.

export DJANGO_SETTINGS_MODULE=yourproject.settings

Если это ваш единственный проект Django, самым простым решением является добавление этой строки в ваш .bashrc.

Если у вас несколько проектов Django и вы хотите не менять переменную при каждом переключении между проектами, вы можете добавить эту линию экспорта выше, адаптированную для каждого проекта, к сценариям postactivate всех ваших виртуальных виртуальных машин Django. Для меня postactivate script находится в ~/.virtualenvs/myvenv/bin/postactivate.

Ответ 3

В моем случае я действительно хочу запустить IPython в нескольких виртуальных средах (созданных с использованием пакетов по умолчанию --no-site-packages), которые используются для другого проекта Django. Я не хотел устанавливать IPython в каждом env.

Как упоминал @Arash, экспорт DJANGO_SETTINGS_MODULE работает, но с ним сложно справиться, когда у вас несколько проектов.

Я, наконец, решил эту проблему в двух частях.

Сначала я добавил каталоги "/usr/lib/python2.7/dist-packages" и "/usr/lib/pymodules/python2.7" to sys.path в /usr/bin/ipython script как упоминалось здесь.

Затем я использую manage_to_ipython.py script, чтобы создать script django-project-проект под названием runipython.py, используя файл manage.py, созданный django-admin.py

Раз в каждом проекте Django $cd <project_dir> затем запустите python manage_to_ipython.py

Теперь для запуска IPython просто введите ./runipython.py

Модифицированные скрипты /usr/bin/ipython и manage_to_ipython.py можно найти здесь.