Як додати заповнення вкладки до оболонки 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, він не пропонує завершення вкладки.

Чи може хтось сказати мені, що робить джанго, щоб дати мені інтерактивну консоль, або що мені потрібно зробити, щоб запустити інтерактивну консоль без програми для джанго?


1
Коли ви набираєте python, ви отримуєте підказку >>>, правда? Це інтерактивна оболонка. Яке ваше запитання?
С.Лотт

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 наразі недоступні.
Skylar Saveland

1
Чомусь вищесказане працювало для мене в моєму старому mac з "гірським левом", але не працювало над новим mac з "el captan". Мені потрібно source ~/.bashrcщоразу, щоб змусити його працювати, перш ніж запускати інтерпретатора пітона. Якісь поради?
hi15

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 встановити ptpython

а для оболонки django слід імпортувати django env, як це

import os

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

Повірте, це найкращий шлях до вас !!!


5

виправлення для оболонки Windows10:

  • pip встановити pyreadline
  • pip install ipython [оболонка]


1

У 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 без будь-якого створення / зміни .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 Введіть "допомога", "авторські права "," кредити "або" ліцензія "для отримання додаткової інформації.

import os os. Показати всі 318 можливостей? (y або n) 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 .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.