为emacs jedi安装python服务器

为emacs jedi安装python服务器,python,python-2.7,emacs,emacs-jedi,Python,Python 2.7,Emacs,Emacs Jedi,我正在尝试使用marmalade软件包管理器安装Jedi for emacs,方法如下--。软件包管理器安装Jedi及其依赖项。但我无法使用以下方式安装python服务器: M-x jedi:install-server 因为即使在绝地安装后重新启动emacs,该命令也不可用。唯一可用的命令是: Possible completions are: jedi:ac-setup jedi:complete jedi:dot-complete jedi:get-in-function-cal

我正在尝试使用marmalade软件包管理器安装Jedi for emacs,方法如下--。软件包管理器安装Jedi及其依赖项。但我无法使用以下方式安装python服务器:

M-x jedi:install-server
因为即使在绝地安装后重新启动emacs,该命令也不可用。唯一可用的命令是:

Possible completions are:
jedi:ac-setup   jedi:complete
jedi:dot-complete   jedi:get-in-function-call
jedi:goto-definition    jedi:goto-definition-next
jedi:goto-definition-pop-marker     jedi:setup
jedi:show-doc   jedi:show-jedi-version
jedi:start-dedicated-server     jedi:stop-server
jedi:toggle-debug-server
My.emacs具有以下功能:

(自动加载“绝地:设置“绝地”为零)
(添加钩子“python模式钩子”绝地:设置)
(setq绝地武士:在t点完成)
我正在Mac OS X上使用emacs

在当前状态下,当我打开任何python文件(我使用python 2.7)时,我会看到以下内容自动出现在minibuffer中:

deferred error : (error Server may raise an error : Traceback (most recent call last):
  File "/Users/t_nithyanandan/.emacs.d/elpa/jedi-0.1.2/jediepcserver.py", line 302, in <module>
    main()
  File "/Users/t_nithyanandan/.emacs.d/elpa/jedi-0.1.2/jediepcserver.py", line 298, in main
    jedi_epc_server(**vars(ns))
  File "/Users/t_nithyanandan/.emacs.d/elpa/jedi-0.1.2/jediepcserver.py", line 210, in jedi_epc_server
    import_jedi()
  File "/Users/t_nithyanandan/.emacs.d/elpa/jedi-0.1.2/jediepcserver.py", line 249, in import_jedi
    import jedi
ImportError: No module named jedi
)
延迟错误:(错误服务器可能引发错误:回溯(最近一次呼叫最后一次):
文件“/Users/t_nithyanandan/.emacs.d/elpa/jedi-0.1.2/jediepcserver.py”,第302行,在
main()
文件“/Users/t_nithyanandan/.emacs.d/elpa/jedi-0.1.2/jediepcserver.py”,第298行,主文件
绝地epc_服务器(**vars(ns))
文件“/Users/t_nithyanandan/.emacs.d/elpa/jedi-0.1.2/jediepcserver.py”,第210行,在jedi_epc_服务器中
导入_绝地()
文件“/Users/t_nithyanandan/.emacs.d/elpa/jedi-0.1.2/jediepcserver.py”,第249行,在import_jedi中
进口绝地武士
恐怖:没有名为绝地的模块
)
我试着用其他方法安装绝地武士,比如el-get和手动安装,但这些方法似乎都走不了这么远。我发现可用的绝地命令比上面列出的还要少

有人能帮我指出我遗漏了什么吗

谢谢

编辑:我想使用绝地的主要目的是在python编程中使用自动完成功能,尽管我相信绝地有很多强大的功能。为了达到这样的目的,python服务器是必不可少的还是可以解决这个问题?最后,当然,我想利用绝地武士的更多功能。

目前的果酱,但您正在查看文档

政府有:

package.el(果酱或MELPA) 您可以从或使用package.el接口安装Jedi.el。由于package.el不支持安装非elisp软件包,因此需要手动安装Python部件(请参阅下一节)

然后在下一节中,重要的一点是:

安装和安装

  • 提出要求
    (不需要root权限)或
  • pip install-r requirements.txt
    如果要确定在何处安装Python模块。您需要root权限(即,
    sudo
    )才能将其安装到系统目录中

您应该能够从
~/.emacs.d/elpa/jedi-0.1.2/
目录中执行
生成需求
,但是类似
pip install epc jedi
的操作也应该可以。多亏了emacs jedi github的Chris和syohex的帮助,我成功地解决了这个问题。他们的功劳在于找到了绝地版本

我只是将讨论链接起来,并粘贴我发现的变通方法,包括我在过程中遇到的其他问题

我使用的是果酱版本,它安装了一个更旧的版本。所以我卸载了绝地和相关的依赖项。我将我的存储库设置为MELPA,并安装了更新版本的绝地。这就发出了命令

M-x jedi:install-server 
可供选择,但之前的情况并非如此

但是,发出该命令会出现错误

python-environment--make-with-runner: Program named "virtualenv" does not exist.
我确保已将virtualenv的位置添加到.bashrc中的路径中。 所以我查了一下,它建议从shell安装exec path。我从MELPA安装了它并添加了线路

(when (memq window-system '(mac ns))
  (exec-path-from-shell-initialize))
按照指示

使用上述行重新启动Emacs时出现错误:

Symbol's function definition is void: exec-path-from-shell-initialize
因此,我在shell development的exec path下查找了Autoload问题#3(链接可在emacs绝地问题#177的链接中找到)。按照其中一种解决方案,我重新启动了计算机,从shell卸载并重新安装了exec path,这神奇地解决了重新启动之前存在的问题

现在我检查了emacs是否可以使用

M-! which virtualenv
它给出了正确的位置

然后我跑:

M-x jedi:install-server 
现在似乎运行起来没有问题。第一次,有关于设置 下的默认虚拟环境

/Users/XXX/.emacs.d/.python-environments
此外

Running: pip install --upgrade /Users/XXX/.emacs.d/elpa/jedi-20140321.1323/...Done
但在随后的试验中,仅显示pip升级消息

看到服务器安装顺利后,我关闭并重新启动了Emacs,并打开了一个python脚本文件。当我开始编辑时,我在微型缓冲区中收到了以下消息:

Error (jedi): Failed to start Jedi EPC server.
*** You may need to run "M-x jedi:install-server". ***
This could solve the problem especially if you haven't run the command yet
since Jedi.el installation or update and if the server complains about
Python module imports.

因此,我意识到我必须发出命令:

M-x jedi:install-server 
每次我在打开任何python文件之前启动Emacs时。然后,我终于能够看到自动完成功能在编辑过程中可用

尽管我每次都可以手动运行上面的命令,但我希望在每次启动emacs时都能从.emacs中自动运行它。事实证明,我在.emacs中有以下几行代码

(setq jedi:server-command (list "python" "/Users/XXX/.emacs.d/elpa/jedi-0.1.2/jediepcserver.py"))

在我的.emacs中删除这一行后,问题消失了,绝地现在可以使用了。

我使用“sudo pip install epc jedi”安装了epc(0.0.5)和jedi(0.8.1-final0)。我仍然会犯同样的错误。不过我可以在ipython中导入绝地。@Nithya这些模块必须安装到您使用的任何Python环境中。因此,例如,如果您使用的是virtualenv,则在系统范围内安装可能不会有多大帮助。您可能还需要在Emacs中使用类似于
pyvenv
的东西,以使其使用正确的virtualenv。我已经安装了virtualenv,但在激活任何特定的虚拟环境后我都没有使用它。所以我打算在系统范围内安装它。我想我已经解决了这个问题,主要问题是我没有安装最新版本。我将在这里发布我的答案。我已经在下面发布了我的答案,它帮助我解决了这个问题,包括我在这个过程中遇到的其他小问题@克里斯,我无法对你的答案投赞成票,因为我还没有足够的声望点数,但谢谢你指点我
(setq jedi:server-command (list "python" "/Users/XXX/.emacs.d/elpa/jedi-0.1.2/jediepcserver.py"))