Как добавить завершение табуляции в оболочку Python?


125

При запуске приложения 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
Когда вы вводите python, вы получаете приглашение >>>, верно? Это интерактивная оболочка. Каков твой вопрос?
S.Lott

4
Он не предлагает завершение табуляции. Это проблема.
Эшкристофер,

Обновите свой вопрос, чтобы указать это.
Дэрил Спитцер,

Ответы:


210

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

Создайте файл .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

Кажется, это работает.


2
это работает для Jython, где IPython и bpython в настоящее время недоступны.
Скайлар Савеланд

1
По какой-то причине это работало для меня в моем старом Mac с «Mountain lion», но не работало для нового Mac с «el captan». Мне нужно source ~/.bashrcкаждый раз, чтобы он работал перед запуском интерпретатора Python. Какие-нибудь советы?
hi15, 04

1
@hmi Попробуйте объединить свои .bashrcи, .bash_profileкак предлагается внизу этой страницы: joshstaiger.org/archives/2005/07/bash_profile_vs.html Здесь также представлена ​​информация о различиях между ними. Это может не решить проблему, но может помочь.
Dangercrow

@hmi Попробуй вставить /etc/bashrcвместо ~/.bashrc.
голоса

Просто для справки - я, вероятно, возвращался к этому ответу больше раз, чем к любому другому, на StackOverflow, поэтому спасибо.
timmins



10

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

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

pip install ptpython

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

импорт ОС

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

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


5

исправление для оболочки windows10:

  • pip install pyreadline
  • pip install ipython [оболочка]


1

В Python3 эта функция включена по умолчанию. В моей системе не установлен модуль readline. Я на Манджаро. Я не сталкивался с этой проблемой завершения вкладки в других дистрибутивах Linux (elementary, 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.


0

Да. Он встроен в 3.6.

fernanr @ gnuruwi ~ $ python3.6 Python 3.6.3 (по умолчанию, 10 апреля 2019 г., 14:37:36) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] в Linux Введите «help», «copyright "," кредиты "или" лицензия "для получения дополнительной информации.

import os os. Показать все 318 возможностей? (да или нет) os.CLD_CONTINUED os.O_RDONLY os.ST_NOEXEC os.environ os.getpid (os.readlink (os.spawnvpe (os.CLD_DUMPED os.O_RDWR os.ST_NOSUID os.environb os.getppid (os.readv (os .st


-1

Для более старых версий (2.x) приведенный выше скрипт работает как шарм :)

fernanr@crsatx4 ~ $ cat .bashrc | grep -i python
#Tab completion for python shell
export PYTHONSTARTUP=~/.pythonrc
fernanr@crsatx4 ~ $ . ~/.bashrc
fernanr@crsatx4 ~ $ echo $?
0
fernanr@crsatx4 ~ $ python2
Python 2.7.5 (default, Jun 11 2019, 14:33:56)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.
Display all 249 possibilities? (y or n)
os.EX_CANTCREAT             os.O_WRONLY                 

Похоже, в вашем ответе отсутствует содержание "~ / .pythonrc"
MadMike
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.