Mi comentario sobre this answer.
escribí /t/min.py que se desarrollará bien en python3 pero no en python2 (diccionario por comprensión trabaja en python3)
Contenido de /t/min.py
#!/usr/bin/python3
# -*- py-python-command: "/usr/bin/python3"; -*-
a = {i:i**2 for i in range(10)}
print(a)
Tenga en cuenta que el shebang indica python3 y la variable local de archivo py-python-command también.
También escribí /t/min-py.el que asegura que python-mode.el (ver 5.1.0) se usa en lugar de python.el.
Contenido de /t/min-py.el
(add-to-list 'load-path "~/m/em/lisp/")
(autoload 'python-mode "python-mode" "Python Mode." t)
;; (setq py-python-command "python3")
nota de que la última línea se comenta.
que inicie Emacs con el comando siguiente:
emacs -Q -l /t/min-py.el /t/min.py &
Ahora Emacs se inicia con mis dotemacs alternos /t/min-py.el y se abre /t/min.py.
Cuando presiono C-c C-c para enviar el búfer a python, dice que la parte "para" es incorrecta y eso indica que se está utilizando python2 en lugar de python3. Cuando presiono C-c! para iniciar el intérprete de python, dice que se inició python 2.5.
Incluso puedo cambiar la segunda línea de/t/min.py a esto:
# -*- py-python-command: "chunkybacon"; -*-
y hacer este experimento de nuevo y emacs todavía usa python2.
Si la última línea de /t/min-py.el no está comentada, entonces C-c C-c y C-c! ambos usan python3.
Se está preguntando cómo conseguir Emacs para detectar automáticamente si está escribiendo código Python 2 o Python 3 Código, y para llamar a la versión de Python correcta? ¿O está preguntando cómo cambiar Emacs para que llame a un comando diferente (es decir, python3) en todos los casos cuando el código de Python se carga en el búfer? –
Obviamente, el primero sería ideal, pero parece bastante difícil, ya que las diferencias sintácticas entre Python 2 y Python 3 son menores. Parece que las respuestas a esta pregunta se ocupan del segundo caso. Gracias por aclararlo. –