org - uninstall python mac
finalizaciĆ³n de la pestaƱa de Python Mac OSX 10.7(Lion) (2)
Antes de actualizar a Lion, tenía la pestaña completa trabajando en un shell de Python a través de la terminal. Siguiendo estas instrucciones , fue posible tener la pestaña completa trabajando.
Desde que me actualicé a Lion, ahora no puedo obtener la pestaña completa trabajando en una sesión de terminal de Python. He seguido las instrucciones anteriores a la carta, y todavía no funciona.
¿Hay alguna diferencia con el módulo readline en Lion? Al conectarse a la opción ''pestaña: completar'' ya no parece funcionar. Me pregunto si es un terminal que está ignorando readline, o si es python en sí.
Versión de Python: 2.7.1
Editar:
Por tabulación completa, quiero decir que podría hacer algo como lo siguiente:
# django
import MyModel
MyModel.objects.a[TAB] # will complete to all()
Apple no entrega la línea de lectura GNU con OS X. Se entrega con BSD libedit que incluye una interfaz de compatibilidad de línea de lectura . El sistema Pythons enviado por Apple y los pitones de 64 bits / 32 bits de los instaladores de python.org se crean con libedit
. El problema es que los comandos admitidos por libedit
son completamente diferentes de los de readline
(consulte, por ejemplo, la discusión here ). Los instaladores tradicionales de python.org de solo 32 bits usan GNL readline
igual que otros distribuidores externos de Python para OS X, como MacPorts. Lo más probable es que anteriormente estuviera usando un Python de este tipo y no uno de Apple reciente. Tiene algunas opciones, además de modificar Django: puede instalar el módulo readline reemplazo de terceros; o puede usar otro Python que viene con la línea de lectura de GNU. Sin embargo, no debe usar Pythons de solo 32 bits de python.org en 10.7 porque, desafortunadamente, Xcode 4 en 10.7 ya no incluye gcc-4.0
y el OS X 10.4u SDK que esos Pythons necesitan para construir e instalar paquetes con C módulos de extensión.
Al colocar lo siguiente en el archivo de inicio de python, se habilitará la finalización de las pestañas tanto para la interfaz libedit como para el módulo típico de línea de lectura. Para obtener más información sobre el archivo de inicio de python, consulte aquí
import readline
import rlcompleter
if ''libedit'' in readline.__doc__:
readline.parse_and_bind("bind ^I rl_complete")
else:
readline.parse_and_bind("tab: complete")
Como utiliza libedit / editline, la sintaxis para habilitar el autocompletado es un poco diferente. Primero puede forzar los enlaces de emacs (como ocurre con readline si no estoy equivocado) escribiendo:
readline.parse_and_bind("bind -e")
Luego puede agregar autocompletado vinculado a su botón TAB (man editrc):
readline.parse_and_bind("bind ''/t'' rl_complete")
Y si desea admitir el sangrado y tiene un historial (que se encuentra en Internet), debería tener ese aspecto (a menos que haya cometido un error):
import readline,rlcompleter
### Indenting
class TabCompleter(rlcompleter.Completer):
"""Completer that supports indenting"""
def complete(self, text, state):
if not text:
return ('' '', None)[state]
else:
return rlcompleter.Completer.complete(self, text, state)
readline.set_completer(TabCompleter().complete)
### Add autocompletion
if ''libedit'' in readline.__doc__:
readline.parse_and_bind("bind -e")
readline.parse_and_bind("bind ''/t'' rl_complete")
else:
readline.parse_and_bind("tab: complete")
### Add history
import os
histfile = os.path.join(os.environ["HOME"], ".pyhist")
try:
readline.read_history_file(histfile)
except IOError:
pass
import atexit
atexit.register(readline.write_history_file, histfile)
del histfile