para - uninstall python mac
Finalización de tabulación en el intérprete de Python en el terminal OS X (7)
Aquí hay una versión multiplataforma completa de la finalización de la pestaña de carga para Windows / OS X / Linux en una sola toma:
#Code UUID = ''9301d536-860d-11de-81c8-0023dfaa9e40''
import sys
try:
import readline
except ImportError:
try:
import pyreadline as readline
# throw open a browser if we fail both readline and pyreadline
except ImportError:
import webbrowser
webbrowser.open("http://ipython.scipy.org/moin/PyReadline/Intro#line-36")
# throw open a browser
#pass
else:
import rlcompleter
if(sys.platform == ''darwin''):
readline.parse_and_bind ("bind ^I rl_complete")
else:
readline.parse_and_bind("tab: complete")
Hace varios meses, escribí una publicación en el blog en la que se detallaba la forma de completar las pestañas en el intérprete interactivo estándar de Python, una función que antes creía que solo estaba disponible en IPython. Lo encontré tremendamente útil dado que a veces tengo que cambiar al intérprete estándar debido a los problemas de IPython Unicode.
Recientemente he trabajado en OS X. Para mi descontento, el script no parece funcionar para la aplicación Terminal de OS X. Espero que algunos de ustedes con experiencia en OS X puedan ayudarme a resolver problemas para que pueda funcionar en Terminal, también.
Estoy reproduciendo el siguiente código
import atexit
import os.path
try:
import readline
except ImportError:
pass
else:
import rlcompleter
class IrlCompleter(rlcompleter.Completer):
"""
This class enables a "tab" insertion if there''s no text for
completion.
The default "tab" is four spaces. You can initialize with ''/t'' as
the tab if you wish to use a genuine tab.
"""
def __init__(self, tab='' ''):
self.tab = tab
rlcompleter.Completer.__init__(self)
def complete(self, text, state):
if text == '''':
readline.insert_text(self.tab)
return None
else:
return rlcompleter.Completer.complete(self,text,state)
#you could change this line to bind another key instead tab.
readline.parse_and_bind(''tab: complete'')
readline.set_completer(IrlCompleter(''/t'').complete)
# Restore our command-line history, and save it when Python exits.
history_path = os.path.expanduser(''~/.pyhistory'')
if os.path.isfile(history_path):
readline.read_history_file(history_path)
atexit.register(lambda x=history_path: readline.write_history_file(x))
Tenga en cuenta que lo he editado levemente de la versión en la publicación de mi blog para que el IrlCompleter
se IrlCompleter
con una pestaña verdadera, que parece ser lo que se IrlCompleter
con la tecla Tab en la Terminal.
Después de chocar con muchos problemas relacionados con Python (2 y 3) en FreeBSD, finalmente conseguí una extensión adecuada para trabajar con libedit directamente como el completador de Python.
El problema básico con libedit / readline es que la finalización y entrada de Python estaban muy inclinadas hacia la línea de lectura de GNU ... Lamentablemente, esta no es una interfaz particularmente buena. Requiere un número gigante de globales en C y no funciona bien en una "instancia".
Solución:
https://github.com/mark-nicholson/python-editline
Esta es una verdadera extensión de Python separada que se vincula directamente a libedit mediante la interfaz real "libedit", no el pegamento readline en el lateral.
Lo he probado bastante a fondo en Ubuntu, FreeBSD, OpenBSD, NetBSD y MacOS. Los resultados se publican en el archivo Léame. El código c es muy limpio y prácticamente no tiene bits dependientes de la plataforma, a diferencia del módulo readline.c en Python.
Notas: Funciona en Python3> 3.2. NO es un reemplazo directo para ''importar readline'' en otros scripts, pero esos scripts se pueden ajustar fácilmente. Puede coexistir con readline.so; existe un código para un archivo sitecustomize.py que permite la selección. Puede usar una distribución ''libedit.so'', una compilación personalizada o libedit integrada en la propia extensión.
Esto debería funcionar bajo la pitón de Leopard:
import rlcompleter
import readline
readline.parse_and_bind ("bind ^I rl_complete")
Considerando que este no lo hace:
import readline, rlcompleter
readline.parse_and_bind("tab: complete")
Guárdelo en ~ / .pythonrc.py y ejecute en .bash_profile
export PYTHONSTARTUP=$HOME/.pythonrc.py
Esto me funciona tanto en Linux bash como en OS X 10.4
import readline
import rlcompleter
readline.parse_and_bind(''tab: complete'')
La forma documentada de diferenciar libedit (la semi-línea de lectura de Mac OS) de la real es: si "libedit" está en línea de lectura. doc : pass # Mac case else: pass # GNU readline case
Si después de probar lo anterior, todavía no funciona, intente ejecutar en el shell:
sudo easy_install readline
Luego, crea el archivo ~ / .profile con el contenido:
export PYTHONSTARTUP=$HOME/.pythonrc.py
y un archivo ~ / .pythonrc.py con el contenido:
try:
import readline
except:
print ("Module readline is not available.")
else:
import rlcompleter
readline.parse_and_bind("tab: complete")
Gracias a Steven Bamford por la sugerencia de instalación fácil, y Nicolas por el contenido del archivo.