Su 'intérprete de shell python' no parece admitir readline


13

Tengo este problema con mi 25.1 y Python 3.5 en Ubuntu 16.10, pero no veo que se resuelva en ningún lado. Preguntándose cuál era el último estado. Reproducción:

> emacs -Q --eval '(setq python-shell-interpreter "python3")'

entonces

M-x run-python da

Warning (python): Your ‘python-shell-interpreter’ doesn’t seem to support readline, yet ‘python-shell-completion-native’ was t and "python3" is not part of the ‘python-shell-completion-native-disabled-interpreters’ list.  Native completions have been disabled locally.

Vi una idea en la que an M-x find-function python-shell-completion-native-tryextraería la función desde lo profundo (/usr/local/share/emacs/25.1/lisp/progmodes/python.el.gzy se suponía que la última línea era nil "_")))y no nil ""))). Otra conversación aquí habla sobre cambiarinputrc

Cambié a otro usuario y pude usar 'run-python' sin ninguna advertencia. Resulta que era mi configuración de línea de lectura. Bash 4.3 agregó una nueva característica de línea de lectura: "establecer estadísticas de color" que tenía en .inputrc. Eliminar esa línea solucionó mi problema, creo que esto debería ser reproducible para todos.

¿Alguien sabe qué es lo último sobre esto? Por cierto, ejecutar Python2 ( (setq org-babel-python-command "python2")) no tiene este problema.


El error de Emacs al que se vinculó está marcado como resuelto para 25.2 (aún no publicado), por lo que debe esperar que todavía esté presente en 25.1. Puede probar la versión de prueba previa (25.1.9x).
npostavs

¿Sabes cuándo sale 25.2?
147pm

Tal vez un mes más o menos? Puede probar la prueba previa (25.1.91) ahora alpha.gnu.org/gnu/emacs/pretest
npostavs

Tengo los mismos síntomas ("Su 'intérprete de shell python' no parece admitir readline") ejecutando Python 3.6.0 y GNU Emacs 25.2 RC1 en Windows 10, por lo que el problema aún no está resuelto, o tal vez es un problema diferente?
Martin

Respuestas:


10

Si no desea obtener un 25.2 rc, puede aplicar la corrección de errores agregando esto a su archivo init.el:

(with-eval-after-load 'python
  (defun python-shell-completion-native-try ()
    "Return non-nil if can trigger native completion."
    (let ((python-shell-completion-native-enable t)
          (python-shell-completion-native-output-timeout
           python-shell-completion-native-try-output-timeout))
      (python-shell-completion-native-get-completions
       (get-buffer-process (current-buffer))
       nil "_"))))

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=25753#44


Funciona de maravilla. Gracias por compartir.
dangom

2
Por alguna razón, agregar esto (setq python-shell-completion-native-enable nil)a mi init.elarchivo funcionó, sin requerir el código anterior.
Guilherme Salomé

@ GuilhermeSalomé que suprime la advertencia, pero no se completa de forma nativa. Si estás en Windows, eso es lo correcto .
npostavs

55
Incluso en Emacs 26.1 sigo teniendo este problema.
Guilherme Salomé

1
También en Emacs 26.2, y esta respuesta aún funciona.
Zoe Rowa

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.