(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 против manage.py ничего не изменит.

20
orokusaki 31 Янв 2013 в 05:05

3 ответа

Лучший ответ

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

46
Mike Repass 31 Янв 2013 в 01:31

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

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

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

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

Затем я использую сценарий manage_to_ipython.py для создания сценария, специфичного для проекта django, который называется 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 можно найти здесь. ,

1
Community 23 Май 2017 в 12:32

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

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

export DJANGO_SETTINGS_MODULE=yourproject.settings

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

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

14
Arash Ghoreyshi 18 Ноя 2013 в 08:33