Как добавить вкладку в оболочку Python?

При запуске приложения django с использованием python manage.py shell я получаю оболочку InteractiveConsole - я могу использовать вкладку и т.д.

Python 2.5.1 (r251:54863, Apr 15 2008, 22:57:26) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)

При запуске интерпретатора python, использующего python, он не предлагает завершение табуляции.

Может ли кто-нибудь сказать мне, что делает django, чтобы дать мне интерактивную консоль или что мне нужно сделать, чтобы запустить интерактивную консоль без приложения django?

Ответ 1

Возможно, я нашел способ сделать это.

Создайте файл .pythonrc

# ~/.pythonrc
# enable syntax completion
try:
    import readline
except ImportError:
    print("Module readline not available.")
else:
    import rlcompleter
    readline.parse_and_bind("tab: complete")

то в вашем .bashrc файле добавьте

export PYTHONSTARTUP=~/.pythonrc

Это похоже на работу.

Ответ 4

Я использую ptpython. https://github.com/jonathanslenders/ptpython/

ptpython - замечательный инструмент для автозаполнения оболочки cmd. установить ptpython очень просто, использовать инструмент pip

pip install ptpython

и для оболочки django вам необходимо импортировать django env, например

import os

os.environ.setdefault( "DJANGO_SETTINGS_MODULE", "testweb.settings" )

Поверьте мне, это лучший способ для вас!

Ответ 5

Похоже, что python3 имеет это вне коробки!

Ответ 6

В Python3 эта функция включена по умолчанию. В моей системе не установлен модуль readline. Я нахожусь в Манджаро. Я не сталкивался с этой проблемой завершения вкладки в других дистрибутивах Linux (элементарный, ubuntu, mint).

После pip установки модуля при импорте произошла ошибка:

ImportError: libncursesw.so.5: cannot open shared object file: No such file or directory

Чтобы решить эту проблему, я побежал -

cd /usr/lib ln -s libncursesw.so libncursesw.so.5

Это разрешило ошибку импорта. И он также завершил выполнение табуляции в python repl без создания/изменения .pythonrc и .bashrc.