Come faccio ad aggiungere il completamento della scheda alla shell Python?
-
05-07-2019 - |
Domanda
All'avvio di un'applicazione django usando python manage.py shell
, ottengo una shell InteractiveConsole - posso usare il completamento della scheda, ecc.
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)
Quando si avvia un interprete python usando python
, non offre il completamento della scheda.
Qualcuno può dirmi cosa sta facendo django per darmi una console interattiva o cosa devo fare per avviare una console interattiva senza un'app django?
Soluzione
Potrei aver trovato il modo di farlo.
Crea un file .pythonrc
# ~/.pythonrc
# enable syntax completion
try:
import readline
except ImportError:
print("Module readline not available.")
else:
import rlcompleter
readline.parse_and_bind("tab: complete")
quindi nel tuo file .bashrc, aggiungi
export PYTHONSTARTUP=~/.pythonrc
Sembra funzionare.
Altri suggerimenti
Penso che django faccia qualcosa come https://docs.python.org/library/rlcompleter. html
Se vuoi avere un interprete interattivo davvero valido, dai un'occhiata http://ipython.scipy.org/ .
Per la cronaca, questo è trattato nel tutorial: http://docs.python.org /tutorial/interactive.html
Uso ptpython. https://github.com/jonathanslenders/ptpython/
ptpython è un meraviglioso strumento di completamento automatico della shell cmd. installare ptpython è molto semplice, usa lo strumento pip
pip install ptpython
e per la shell django, dovresti importare env django, in questo modo
import os
os.environ.setdefault (" DJANGO_SETTINGS_MODULE " ;, " testweb.settings ")
Fidati di me, questo è il modo migliore per te !!!
Sembra che python3 sia pronto per l'uso!
In Python3 questa funzione è abilitata per impostazione predefinita. Nel mio sistema non era installato il modulo readline
. Sono a Manjaro. Non ho riscontrato questo problema di completamento delle schede su altre distribuzioni di Linux (elementare, ubuntu, pari).
Dopo aver pip
installato il modulo, durante l'importazione, stava lanciando il seguente errore-
ImportError: libncursesw.so.5: impossibile aprire il file oggetto condiviso: nessun file o directory
Per risolvere questo, ho corso-
cd / usr / lib
ln -s libncursesw.so libncursesw.so.5
Questo ha risolto l'errore di importazione. E ha anche portato il completamento della scheda in Python repl senza alcuna creazione / modifica di .pythonrc
e .bashrc
.
Creo un .pythonrc.py
più perfetto, potresti trovare utile:
https://gist.github.com/guyskk/6f3522e3d17135b470bf3d982c80cc01
correzione per shell windows10:
- pip install pyreadline
- pip install ipython [shell]