El autocompletado de la pestaña `ipython` no funciona en el módulo importado


82

La finalización de tabulación en IPython parece no funcionar. Por ejemplo,

import numpy
numpy.<tab>

simplemente agrega una pestaña.

import numpy
num<tab>

también agrega una pestaña. ¿Podría sugerir algunas posibles causas de este problema? Estoy ejecutando Windows 7 y Python 2.6.5.


1
La siguiente solución funcionó para mí, ¿funcionó para usted? Si es así, marque la respuesta aceptada.
bacar

Nada de lo siguiente funcionó para mí. Tenga la última pyreadline. Ejecutando el cuaderno jupyter en python 3.5.
Michael Szczepaniak

En caso de que estuviera funcionando y luego dejó de funcionar después de presionar algunas teclas aleatorias, verifique si el tipo de celda se cambió accidentalmente de "Código" a otra cosa, como "Markdown" o "Raw NBConvert".
Sorin Postelnicu

si acaba de instalar un nuevo módulo de Python y ipython no importa autocompletar, vaya aquí
Trevor Boyd Smith

jedila actualización de 0.17 a 0.18 tiene errores y deshabilita la finalización de la pestaña IPython. Vea la respuesta de diciembre de 2020 a continuación.
Abel Cheung

Respuestas:


93

Asegúrese de haber instalado la biblioteca pyreadline . Es necesario para completar la pestaña y otras funciones de IPython; en Windows no viene con el paquete IPython y debe instalarlo por separado.

> pip install pyreadline

1
@joaquin Intenté instalar esto para mac usando install gnureadline, pero todavía no puedo completar la pestaña cuando hago algo como numpy.<tab>. ¿Sabes por qué es esto?
TheRealFakeNews

@AlanH Lo siento, no tengo idea de MAC. Tal vez debería abrir una nueva pregunta específica.
Joaquin

1
Para su información, si no funciona de inmediato (que fue mi caso), inicie la nueva consola.
Alby

2
Agregar una recomendación para usar Anaconda o Miniconda para administrar las instalaciones. Acabo de instalar ipython ( conda install ipython) y no tuve problemas para completar la pestaña. Puede usarlo simultáneamente con pip.
Kenny

1
Creo que esta respuesta está desactualizada, ya que iPython no se basa en pyreadlines desde la versión 5.0, y las pyreadlines no se han desarrollado desde 2017 - Ver ipython.org/pyreadline.html
Olsgaard


7

Es posible que su archivo ipythonrc esté desactualizado. Intenta correr

ipython -upgrade

10
la -upgradebandera ya no es compatible.
jsmedmar

6

pip me dijo que tenía instalada la versión 1.7.1 de pyreadline

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

La actualización pyreadlineme lo arregló:

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

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

4

La degradación de iPython funcionó.

pip install --upgrade ipython==5.8.0

3

El clásico "has intentado apagarlo y encenderlo de nuevo" funcionó para mí.

pip uninstall ipython
pip install ipython

3

Tuve este problema. Resolví degradando el paquete python-parso

degradando el paquete python-parso (0.8.0-1 => 0.6.2-1)


1
para mí, rebajar la calificación de 0.8.0 a 0.7.1 funcionó
CIsForCookies

1

A partir de ahora, en un OSX, pip instalado, ipython no da la finalización de la pestaña, pyreadline release.py está roto ... qué WFM:

easy_install ipython readline

YMMV.


1

Alguien más en StackOverflow publicó este enlace: http://www.vankouteren.eu/blog/2009/06/getting-ipython-readline-and-auto-completion-to-work-on-mac-os-x/

Es básicamente easy_install readlineque descubrir dónde se instaló el huevo de readline y editar el script ipython bin para usar este readline:

  1. Instale la línea de lectura "oficial": easy_install readline
  2. Descubra dónde está. Mira /Library/Python/site-packages/readline-*.eggo en tu contraparte de Virtualenv
  3. Descubra dónde está ipython bin: which ipython
  4. Agregue UNA LÍNEA a este archivo, agregando la ruta del huevo readline justo después de la import syslínea.

Mi script ipython bin virtualenved comenzó a funcionar de la siguiente manera:

#!/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

Me doy cuenta de que esta es una pregunta muy antigua, pero ninguna de las respuestas anteriores funcionó para mí (y este es el primer resultado que recibe cuando busca en Google una pregunta de esta naturaleza).

Debo mencionar que esto NO es exclusivo de Windows, tuve el problema al ejecutar CentOS 6.5 y Python 2.7

Aquí esta lo que hice:

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)

Si no tiene los paquetes -devel, su instalación fallará cuando llegue el momento de vincularlos y construir los huevos. ¡Espero que esto ayude a otros!


0

Pyreadline es necesario para ipython. Instale pyreadline. Esto se hizo en Windows 7. Obtenga pyreadline zip, pyreadline-master.zip , descomprima. En powershell, cambie el directorio a pyreadline comprimida, asegúrese de que Python esté configurado en Path, e ingrese el comando python setup.py installEsto instalará pyreadline en C: \ Python27 \ Lib \ site-packages


0

Tenía este problema y sabía que tenía el pip instalado para el módulo que estaba buscando. Realizarme $ ipython --initresolvió el problema.


0

Tuve que hacerlo mv ~/.ipython{,.bak}en mi caso.


0

Si usa el cuaderno Jupyter y aún logró que la función de autocompletar de Tab funcionara después de haber intentado todos los pasos sugeridos en la publicación aquí, es posible que desee verificar si está intentando usar la función de autocompletar de Tab dentro de una definición de función. Si sus declaraciones de importación son parte de la función como se muestra a continuación, no obtendrá el autocompletado de la pestaña. Debe colocar las declaraciones de importación fuera de la función y también ejecutarlas una vez antes de solicitar la finalización automática de los paquetes.

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

    a = pd.DataFrame(np.random.normal(1,3, (4,4))
    return a

0

Enfrenté el mismo problema con la biblioteca numpy. El problema es con la versión particular de ipython o jupyter notebook y se resuelve simplemente actualizando ipython o jupyter. Si está utilizando un entorno conda como anaconda o miniconda, actualice ipython en ese entorno utilizando

conda update ipython

En caso de anaconda también necesita actualizar qtconsole

conda update qtconsole

A veces, anaconda restringe la actualización de ipython y luego intenta

conda update -all

Si no está usando un entorno, actualice directamente usando pip

pip update ipython
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.