¿Cómo agrego la terminación de la pestaña al shell de Python?
-
05-07-2019 - |
Pregunta
Al iniciar una aplicación django utilizando python manage.py shell
, obtengo una shell InteractiveConsole. Puedo usar la pestaña completa, 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)
Cuando recién inicias un intérprete de python usando python
, no ofrece la opción de completar la pestaña.
¿Puede alguien decirme qué está haciendo django para ofrecerme una consola interactiva, o qué debo hacer para iniciar una consola interactiva sin una aplicación de django?
Solución
Es posible que haya encontrado una manera de hacerlo.
Crea un archivo .pythonrc
# ~/.pythonrc
# enable syntax completion
try:
import readline
except ImportError:
print("Module readline not available.")
else:
import rlcompleter
readline.parse_and_bind("tab: complete")
luego en su archivo .bashrc, agregue
export PYTHONSTARTUP=~/.pythonrc
Eso parece funcionar.
Otros consejos
Creo que django hace algo como https://docs.python.org/library/rlcompleter. html
Si desea tener un intérprete interactivo realmente bueno, eche un vistazo a http://ipython.scipy.org/ .
Para el registro, esto se trata en el tutorial: http://docs.python.org /tutorial/interactive.html
Yo uso ptpython. https://github.com/jonathanslenders/ptpython/
ptpython es una herramienta maravillosa para autocompletar shell cmd. instalar ptpython es muy fácil, use la herramienta pip
pip install ptpython
y para el shell de django, debes importar el env de django, como este
os de importación
os.environ.setdefault (" DJANGO_SETTINGS_MODULE " ;, " testweb.settings ")
Confía en mí, ¡esta es la mejor manera para ti!
¡Parece que Python3 lo tiene fuera de caja!
En Python3, esta función está habilitada de forma predeterminada. Mi sistema no tenía el módulo readline
instalado. Estoy en Manjaro. No enfrenté este problema de finalización de pestaña en otras distribuciones de linux (elementary, ubuntu, mint).
Después de pip
instalar el módulo, al importar, se produjo el siguiente error:
ImportError: libncursesw.so.5: no se puede abrir el archivo de objeto compartido: no existe tal archivo o directorio
Para resolver esto, corrí-
cd / usr / lib
ln -s libncursesw.so libncursesw.so.5
Esto resolvió el error de importación. Y también trajo la terminación de la pestaña en la respuesta de Python sin ninguna creación / cambio de .pythonrc
y .bashrc
.
Creo un .pythonrc.py
más perfecto, puede que te resulte útil:
https://gist.gpp.
solución para el shell de windows10:
- pip install pyreadline
- pip install ipython [shell]