2012-12-04 44 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