web-dev-qa-db-fra.com

Comment puis-je ajouter la complétion de tabulation au shell Python?

Lorsque je lance une application Django avec python manage.py Shell, je reçois un shell InteractiveConsole - je peux utiliser la complétion par tabulation, etc.

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)

Lors du démarrage d'un interpréteur python à l'aide de python, il n'est pas possible de compléter les tabulations.

Quelqu'un peut-il me dire ce que Django fait pour me fournir une console interactive ou ce que je dois faire pour démarrer une console interactive sans application Django?

104
ashchristopher

J'ai peut-être trouvé un moyen de le faire.

Créer un fichier .pythonrc

# ~/.pythonrc
# enable syntax completion
try:
    import readline
except ImportError:
    print("Module readline not available.")
else:
    import rlcompleter
    readline.parse_and_bind("tab: complete")

puis dans votre fichier .bashrc, ajoutez

export PYTHONSTARTUP=~/.pythonrc

Cela semble fonctionner.

181
ashchristopher

Je pense que Django fait quelque chose comme https://docs.python.org/library/rlcompleter.html

Si vous voulez un très bon interprète interactif, regardez http://ipython.scipy.org/ .

34
Peter Hoffmann

Pour mémoire, cela est couvert dans le tutoriel: http://docs.python.org/tutorial/interactive.html

26
Thomas Wouters

J'utilise ptpython . https://github.com/jonathanslenders/ptpython/

ptpython est un outil formidable auto-complétant Shell cmd . installer ptpython est très facile, utilisez l'outil pip

pip installer ptpython

et pour Django Shell, vous devez importer l'enveloppe Django, comme ceci

importation os

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

Croyez-moi, c'est le meilleur moyen pour vous !!!

6
alan_wang

On dirait que python3 a sa boîte prête à l'emploi!

3
Michel Samia

Je crée un .pythonrc.py plus parfait, il peut être utile: https://Gist.github.com/guyskk/6f3522e3d17135b470bf3d982c80cc01

0
guyskk

En Python3, cette fonctionnalité est activée par défaut. Le module readline n'était pas installé sur mon système. Je suis sur Manjaro. Je n'ai pas été confronté à ce problème d'achèvement d'onglet sur les autres distributions Linux (élémentaire, Ubuntu, menthe).

Après que pip ait installé le module, lors de l’importation, l’erreur suivante s'est produite.

ImportError: libncursesw.so.5: cannot open shared object file: No such file or directory

Pour résoudre ce problème, j'ai

cd /usr/lib ln -s libncursesw.so libncursesw.so.5

Cela a résolu l'erreur d'importation. Et, cela a également amené la complétion des onglets dans la réplique python sans aucune création/modification de .pythonrc et .bashrc.

0
TrigonaMinima

correctif pour Windows 10 Shell:

  • pip installer pyreadline
  • pip installer ipython [Shell]
0
Mr.B