この答えについての私のコメント。
/t/min.pyを作成しました。これは、python3では正常に実行されますが、python2では実行されません(辞書の理解はpython3で機能します)
/t/min.pyの内容
#!/usr/bin/python3
# -*- py-python-command: "/usr/bin/python3"; -*-
a = {i:i**2 for i in range(10)}
print(a)
shebangはpython3とファイルローカル変数py-python-commandも示していることに注意してください。
また、/ t / min-py.elを作成しました。これにより、python.elの代わりにpython-mode.el(ver 5.1.0)が使用されるようになります。
/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")
最後の行はコメント化されていることに注意してください。
私は次のコマンドでemacsを起動します:
emacs -Q -l /t/min-py.el /t/min.py &
これで、emacsが私の代替dotemacs /t/min-py.elで開始され、/ t/min.pyが開きます。
Cc Ccを押してバッファをPythonに送信すると、「for」の部分が間違っていると表示され、python3の代わりにpython2が使用されていることを示します。Ccを押すと!pythonインタープリターを起動するには、python2.5が起動したと表示されます。
/t/min.pyの2行目を次のように変更することもできます。
# -*- py-python-command: "chunkybacon"; -*-
この実験をもう一度行うと、emacsはまだpython2を使用します。
/t/min-py.elの最後の行がコメントアウトされていない場合は、Cc CcおよびCc!どちらもpython3を使用します。