Функция автозаполнения на вкладке `ipython` не работает в импортированном модуле - PullRequest
73 голосов
/ 09 апреля 2010

Завершение вкладки на IPython, похоже, не работает. Например,

import numpy
numpy.<tab>

просто добавляет вкладку.

import numpy
num<tab>

также просто добавляет вкладку. Не могли бы вы предложить несколько возможных причин этой проблемы? Я использую Windows 7 и Python 2.6.5.

Ответы [ 11 ]

90 голосов
/ 09 апреля 2010

Убедитесь, что вы установили библиотеку pyreadline . Он необходим для завершения вкладки и других функций IPython - в Windows он не поставляется с пакетом IPython, и его необходимо устанавливать отдельно -

> pip install pyreadline
9 голосов
/ 09 ноября 2011

Ваш файл ipythonrc может быть устаревшим. Попробуйте запустить

ipython -upgrade
6 голосов
/ 16 мая 2013

pip сказал мне, что у меня установлена ​​pyreadline версия 1.7.1

C:\Users\me>pip freeze | grep readline
pyreadline==1.7.1

Обновление pyreadline исправил это для меня:

C:\Users\me>pip install --upgrade pyreadline

C:\Users\me>pip freeze | grep readline
pyreadline==2.0
2 голосов
/ 30 июля 2014

Классический «ты пытался выключить и снова включить» работал для меня.

pip uninstall ipython
pip install ipython
1 голос
/ 15 июля 2014

Я понимаю, что это действительно старый вопрос, но ни один из приведенных выше ответов не сработал для меня (и это первый удар, который вы получаете, когда Google задает вопрос такого рода).

Я должен отметить, что это не только для Windows, у меня была проблема с запуском CentOS 6.5 и Python 2.7

Вот что я сделал:

apt-get/yum install ncurses-devel
#If you want history in iPython:
apt-get/yum install sqlite-devel
easy_install ipython readline
ipython

In [1]: from 
Display all 391 possibilities? (y or n)

Если у вас нет пакетов -devel, ваша установка завершится неудачно, когда придет время связать их и собрать яйца. Надеюсь, это поможет другим!

1 голос
/ 16 февраля 2013

Кто-то еще в StackOverflow разместил эту ссылку: http://www.vankouteren.eu/blog/2009/06/getting-ipython-readline-and-auto-completion-to-work-on-mac-os-x/

По существу, easy_install readline, затем найдите, где было установлено яйцо readline, и отредактируйте скрипт ipython bin, чтобы использовать этот readline:

  1. Установить "официальную" readline: easy_install readline
  2. Узнайте, где это. Посмотрите на /Library/Python/site-packages/readline-*.egg или на своего коллегу Virtualenv
  3. Узнайте, где находится бункер ipython: which ipython
  4. Добавьте в этот файл ОДНУ ЛИНИЮ, добавив путь яйца readline сразу после строки import sys.

Мой виртуальный скрипт ipython bin работает следующим образом:

#!/Users/alanjds/src/git/cervejeiras/venv/cervejeiras-lfs/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'ipython==0.13.1','console_scripts','ipython'
__requires__ = 'ipython==0.13.1'
import sys

### ONLY LINE ADDED:
sys.path.insert(0, '/Users/alanjds/src/git/cervejeiras/venv/cervejeiras-lfs/lib/python2.6/site-packages/readline-6.2.4.1-py2.6-macosx-10.6-fat.egg')
####

from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('ipython==0.13.1', 'console_scripts', 'ipython')()
    )
1 голос
/ 28 октября 2012

На данный момент, в OSX, установленный pip ipython не дает завершения табуляции, pyreadline release.py отключен .. что WFM:

easy_install ipython readline

YMMV.

0 голосов
/ 04 декабря 2016

Если вы используете записную книжку Jupyter, и вы по-прежнему получаете автозаполнение Tab после того, как вы выполнили все шаги, предложенные в посте, вы можете проверить, пытаетесь ли вы использовать автозаполнение Tab в определении функции , Если ваши операторы импорта являются частью такой функции, как показано ниже, вы не получите автоматическое заполнение вкладки. Вам нужно поместить операторы импорта за пределы функции, а также выполнить их один раз, прежде чем запрашивать автоматическое завершение пакетов.

def myfunction():
    import pandas as pd
    import numpy as np

    a = pd.DataFrame(np.random.normal(1,3, (4,4))
    return a
0 голосов
/ 20 января 2015

Я должен был mv ~/.ipython{,.bak} в моем случае.

0 голосов
/ 03 ноября 2014

У меня была эта проблема и я знал, что у меня установлен пип для модуля, который я искал. Исполнение $ ipython --init решило проблему для меня.

...