Mon commentaire sur this answer.
j'ai écrit /t/min.py qui fonctionnera bien dans python3 mais pas dans python2 (fonctionne la compréhension dans le dictionnaire python3)
Contenu de /t/min.py
#!/usr/bin/python3
# -*- py-python-command: "/usr/bin/python3"; -*-
a = {i:i**2 for i in range(10)}
print(a)
Notez que le shebang indique python3 et la variable locale de fichier py-python-command aussi.
J'ai également écrit /t/min-py.el qui s'assure que python-mode.el (ver 5.1.0) est utilisé à la place de python.el.
Contenu 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")
Notez que la dernière ligne est commentée.
Je commence emacs avec la commande suivante:
emacs -Q -l /t/min-py.el /t/min.py &
emacs maintenant est démarré avec mes dotemacs alternatives /t/min-py.el et il ouvre /t/min.py.
Lorsque j'appuie sur C-c C-c pour envoyer le buffer à python, il dit que la partie "for" est fausse et cela indique que python2 est utilisé à la place de python3. Quand j'appuie sur C-c! pour démarrer l'interpréteur python, il est dit que python 2.5 est démarré.
Je peux même changer la deuxième ligne de/t/min.py à ceci:
# -*- py-python-command: "chunkybacon"; -*-
et de refaire cette expérience et emacs utilise encore python2.
Si la dernière ligne de /t/min-py.el n'est pas commentée, alors C-c C-c et C-c! Les deux utilisent python3.
Vous vous demandez comment obtenir Emacs pour détecter automatiquement si vous écrivez du code Python 2 ou un code Python 3, et d'appeler la version Python correcte? Ou demandez-vous comment changer Emacs pour qu'il appelle une commande différente (par exemple python3) dans tous les cas où le code Python est chargé dans le tampon? –
Évidemment, le premier serait idéal, mais cela semble assez difficile, car les différences syntaxiques entre Python 2 et Python 3 sont mineures. Il semble que les réponses à cette question prennent en compte le deuxième cas. Merci de clarifier. –