web-dev-qa-db-fra.com

La complétion automatique de l'onglet `ipython` ne fonctionne pas sur le module importé

La complétion par tabulation sur IPython semble ne pas fonctionner. Par exemple,

import numpy
numpy.<tab>

ajoute simplement un onglet.

import numpy
num<tab>

ajoute simplement un onglet, aussi. Pourriez-vous s'il vous plaît suggérer quelques causes possibles à ce problème? J'utilise Windows 7 et Python 2.6.5.

70
djpark121

Assurez-vous d’avoir installé la bibliothèque pyreadline . Il est nécessaire à la complétion des onglets et à d’autres fonctions IPython - sous Windows, le paquet IPython n’est pas fourni et vous devez l’installer séparément 

> pip install pyreadline
88
joaquin

Votre fichier ipythonrc est peut-être obsolète . Essayez de lancer.

ipython -upgrade
9
zwalker

pip m'a dit que j'avais pyreadline version 1.7.1 installé

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

La mise à niveau pyreadline l'a corrigé pour moi:

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

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

Le classique "as-tu essayé de l'éteindre et de le rallumer" a fonctionné pour moi.

pip uninstall ipython
pip install ipython
2
Shashank Agarwal

Quelqu'un d'autre dans StackOverflow a posté ce lien: http://www.vankouteren.eu/blog/2009/06/getting-ipython-readline-and-auto-completion-to-work-on-mac-os-x/

C'est fondamentalement easy_install readline que de découvrir où la readline Egg a été installée et d'éditer le script ipython bin pour utiliser cette readline:

  1. Installez la ligne de lecture "officielle": easy_install readline
  2. Découvrez où il se trouve. Regardez /Library/Python/site-packages/readline-*.Egg ou dans votre homologue de Virtualenv
  3. Découvrez où se trouve ipython bin: which ipython
  4. Ajoutez ONE LINE à ce fichier, en ajoutant le chemin d’oeuf readline juste après la ligne import sys.

Mon script virtualenved ipython bin a fonctionné comme suit:

#!/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 __== '__main__':
    sys.exit(
        load_entry_point('ipython==0.13.1', 'console_scripts', 'ipython')()
    )
1
alanjds

Pour le moment, sur un OSX, le pip installé n'a pas été complété par ipython, pyreadline release.py est cassé .. quel WFM:

easy_install ipython readline

YMMV.

1
Skylar Saveland

Je me rends compte que c’est une question très ancienne, mais aucune des réponses ci-dessus n’a fonctionné pour moi (et c’est le premier succès que vous obtenez lorsque vous recherchez une question de cette nature sur Google).

Je devrais mentionner que cela n’est PAS exclusif à Windows, j’ai eu le problème d’exécuter CentOS 6.5 et Python 2.7.

Voici ce que j'ai fait:

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 vous ne possédez pas les paquets -devel, votre installation échouera au moment de les lier et de construire les œufs. J'espère que cela aidera les autres!

1
steve-gregory

Je devais mv ~/.ipython{,.bak} dans mon cas.

0
maximk

Si vous utilisez le bloc-notes Jupyter et que l'auto-complétion automatique fonctionne toujours après avoir suivi toutes les étapes suggérées dans l'article, vous pouvez vérifier si vous essayez d'utiliser l'auto-complétion dans une définition de fonction. Si vos instructions d'importation font partie de la fonction telle que celle décrite ci-dessous, vous n'obtiendrez pas la saisie automatique des onglets. Vous devez placer les instructions d'importation en dehors de la fonction et les exécuter une fois avant de demander l'auto-complétion sur les packages.

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

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

J'ai eu ce problème et je savais que j'avais le pip installé pour le module que je cherchais. Exécuter $ ipython --init a résolu le problème pour moi.

0
mvnicosia

Pyreadline est nécessaire pour ipython. Installez pyreadline. Cela a été fait dans Windows 7. Obtenez pyreadline Zip, pyreadline-master.Zip , unzip. Dans powershell, changez de répertoire en pyreadline compressé, assurez-vous que python est défini dans Path et entrez commandpython setup.py install Ceci intégrera pyreadline dans C:\Python27\Lib\site-packages

0
user3101288

Rétrograder iPython a fait l'affaire.

pip install --upgrade ipython==5.8.0
0
Justin Case