4

Python 用に開発している Emacs を学習しようとしていますが、モジュールのインポートの問題、つまり SciPy または NumPy がインポートされていないために一部のプロジェクトが機能しないことを発見しました。PYTHONPATH 環境変数の変更など、ここで尋ねられた関連する質問に対して提案された解決策を試しましたが、どれも良くありませんでした。端末からIDLEとプレーンインタープリターを使用するときにsys.pathを比較したところ、異なるバージョンが使用されていることがわかりました:IDLEのPython-2.7.3

Python 2.7.3 (default, Aug  1 2012, 05:14:39) 
[GCC 4.6.3] on linux2
Type "copyright", "credits" or "license()" for more information.
==== No Subprocess ====
>>> from pprint import pprint as pp
>>> import sys
>>> pp(sys.path)
['/home/mench',
'/usr/bin',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PIL',
'/usr/lib/python2.7/dist-packages/gst-0.10',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7',
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client',
'/usr/lib/python2.7/dist-packages/ubuntuone-client',
'/usr/lib/python2.7/dist-packages/ubuntuone-control-panel',
'/usr/lib/python2.7/dist-packages/ubuntuone-couch',
'/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol']

およびデフォルトのシステムインタープリターとして Python-2.7.2

Python 2.7.2 (default, Mar  1 2012, 22:28:45) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from pprint import pprint as pp
>>> import sys
>>> pp(sys.path)
['',
'/home/mench',
'/opt/alps/lib',
'/usr/local/lib/python27.zip',
'/usr/local/lib/python2.7',
'/usr/local/lib/python2.7/plat-linux2',
'/usr/local/lib/python2.7/lib-tk',
'/usr/local/lib/python2.7/lib-old',
'/usr/local/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/site-packages']   

質問: Emacs で適切なバージョンの Python を使用するにはどうすればよいですか? Ubuntu 12.04 で GNU emacs-23.3.1 を使用しています 問題に関する私の仮定が間違っている場合は修正してください

4

1 に答える 1

6

問題は、間違った python 実行可能ファイルが選択されていることだと思います。通常sys.path、モジュールを通常の方法 (pip、setup.py など) でインストールすると、モジュールの場合は適切に設定されます。

問題は、通常/usr/local/binは前/usr/binにあるpython 2.7.2 を手動でインストールしたことです。$PATHこれが、ターミナルのデフォルトの python が 2.7.2 である理由です。特定のパス (つまり ) で python を使用したいことを Emacs に明示的に伝えるには、/usr/bin/pythonpython-mode 用の Emacs 設定が必要です。

Emacsにはいくつかのpythonモードがありますが、Emacs 23を使用しているため、「古い」python.elを使用していると思います。python実行可能ファイルを設定するには、Emacs構成にこれを追加するとうまくいくと思います(しかし、私はこれを使用したことはありませんpython-mode で動作するかどうかはわかりません。):

(setq python-python-command "/usr/bin/python")

このコードを評価した後、python ファイルを再度開く必要があります。または、単純に Emacs を再起動します。

新しい python.el を使用する場合は、に追加/usr/bin/する必要がありますpython-shell-exec-path。python-mode.el を使用している場合は、(setq py-shell-local-path "/usr/bin/python" py-use-local-default t).

于 2012-12-05T00:52:58.527 に答える