Emacs:Pymacs在Carbon Emacs中无法加载ropemacs

3 投票
1 回答
1413 浏览
提问于 2025-04-15 16:58

我正在尝试使用Pymacs和rope/ropemacs来进行flymake语法检查,具体的做法可以在这里找到:

http://www.enigmacurry.com/2009/01/21/autocompleteel-python-code-completion-in-emacs/

当我“正常”启动Carbon Emacs时,它出现了这个错误:

错误:Pymacs加载ropemacs...失败

我在OSX 10.5上用Carbon Emacs时这个功能是可以正常工作的,但在10.6上就不行了。不过,当我使用“终端”版的emacs、Aquamacs,或者通过命令行用“/Applications/Emacs.app/Contents/MacOS/Emacs”打开Carbon Emacs时,它又可以正常工作。我猜这可能是某种路径错误,但我实在搞不明白。

我的系统是OSX 10.6.2,使用的是macports的python 2.6.4。

谢谢!

1 个回答

1

很可能是路径的问题。当你从终端启动 Emacs 时,你的 PATH 环境变量里应该包含了 MacPorts 的 bin 目录 /opt/local/bin,因为你可能修改了某个 shell 配置文件,通常是 .bash_profile,把这个目录加到了 PATH 里。

但是当你直接双击应用程序启动时,shell 就不参与了,所以默认情况下,/opt/local/bin 不会被包含在这个程序的 PATH 变量中。根据 Pymacs 等调用 Python 的方式,它很可能会使用苹果自带的 python2.6(也就是 python/usr/bin/env python)。如果你能找到它调用 Python 的地方,可以把它改成一个绝对路径,比如 /opt/local/bin/python2.6

如果你不知道怎么做,你可以尝试通过修改 Carbon Emacs.app 包里的 plist 文件,加入一个 LSEnvironment 键,并为 PATH 设置正确的值来解决这个问题。或者你可以在 ~/.MacOSX/environment.plist 中创建一个用户级别的 PATH 环境定义。这两种方法的详细说明可以在 这里找到。

另外,你也可以尝试用苹果自带的 Python 2.6.1 来安装 Pymacs。

顺便说一下,你提到的链接里的安装说明使用了 easy_install。如果你需要在 MacPorts 的 Python 中安装包,确保你安装并使用的是对应的 easy_install,而不是使用苹果自带的 /usr/bin 里的那个:

$ sudo port install py26-setuptools
$ /opt/local/bin/easy_install-2.6 <package>

撰写回答