2012-12-04 45 views
4

我在學習爲Python開發的Emacs,並且我發現我的一些項目因模塊導入問題而無法工作,即SciPy或NumPy未導入。我已經嘗試了針對這裏提出的相關問題提出的解決方案,例如更改PYTHONPATH環境變量,但沒有一個是好的。相比具有的sys.path使用從終端IDLE和滑動解釋當我已想出不同的版本被使用:Python的2.7.3在IDLE在emacs中設置適當版本的Python和PYTHONPATH變量

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 如果我對這個問題的假設是錯誤的,請糾正我的錯誤

回答

5

我認爲問題在於選擇了錯誤的python可執行文件。正常情況下,如果以正常方式(pip,setup.py等)安裝模塊,則適當設置模塊sys.path

問題是,您已經手動安裝了python 2.7.2中的/usr/local/bin,它通常在/usr/bin之前$PATH。這就是爲什麼你的終端默認python是2.7.2。爲了明確地告訴Emacs你想在特定路徑中使用python(即,/usr/bin/python),你需要一些用於python模式的Emacs配置。

Emacs有一些python模式,但我猜你正在使用「舊」python.el,因爲你正在使用Emacs 23.要設置python可執行文件,我認爲在你的Emacs配置中添加這個工作(但是我從來沒有使用這條巨蟒模式,所以我不知道,如果它的工作原理):

(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)

+0

非常感謝。起初我並不清楚,因爲我對emacs的無知。我也很困惑我用來設置python模式的不同補丁。現在一切都很好。對於所有閱讀此內容的人來說,請對此答案投票,這是正確和有用的。 – mench

+1

對於python-mode.el,setqing這兩個變量並不會改變我的IPy模式指向的python可執行文件。這在emacs 24.5.1中使用python 2.7.6,ipython 5.1.0,python-mode版本6.2.1,在Ubuntu 14.04 LTS,BTW上運行。我還可以嘗試什麼? – fpt