我正在尝试学习为 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
如果我对问题的假设有误,请纠正我

最佳答案

我认为问题是选择了错误的 python 可执行文件。如果您以正常方式(pip、setup.py 等)安装模块,通常会适本地设置模块的 sys.path

问题是您在 /usr/local/bin 中手动安装了 python 2.7.2,通常在 /usr/bin 中的 $PATH 之前。这就是为什么你在终端中的默认 python 是 2.7.2。要明确告诉 Emacs 您想在特定路径(即 /usr/bin/python )中使用 python,您需要一些针对 python 模式的 Emacs 配置。

Emacs 有一些 python 模式,但我猜你正在使用“旧”python.el,因为你使用的是 Emacs 23。要设置 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)

关于python - 在 emacs 中设置正确版本的 Python 和 PYTHONPATH 变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13712727/

10-14 17:35
查看更多