簡體   English   中英

為emacs-jedi安裝python服務器

[英]Installing python server for emacs-jedi

我正在嘗試使用marmalade包管理器按照以下說明安裝Jedi for emacs - http://tkf.github.io/emacs-jedi/latest/ 包管理器安裝Jedi及其依賴項。 但我不能使用以下命令安裝python服務器:

M-x jedi:install-server

因為即使在jedi安裝后重啟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

我的.emacs有以下內容:

(autoload 'jedi:setup "jedi" nil t)
(add-hook 'python-mode-hook 'jedi:setup)
(setq jedi:complete-on-dot t)

我在Mac OS X上使用emacs。

在當前打開任何python文件的狀態下(我使用python 2.7),我看到以下內容會自動出現在迷你緩沖區中:

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
)

我嘗試使用其他方法安裝jedi,例如el-get和手動但是那些似乎甚至沒有走到這一步。 我看到可用的jedi命令甚至比上面列出的要少。

有人可以幫助指出我缺少的東西嗎?

謝謝。

編輯:我想使用Jedi的主要目的是使用自動完成功能進行python編程,盡管我相信Jedi有許多強大的功能。 出於這樣的目的,python服務器是必不可少的還是可以解決它? 最后,當然,我想利用絕地中的更多功能。

感謝Chris和來自emacs-jedi github的syohex的幫助,我設法解決了這個問題。 在追溯到Jedi版本時,他們可以獲得信用。

我只是鏈接關於emacs-jedi問題#177的討論,並粘貼我發現的解決方法,包括我遇到的其他問題。

我使用的Marmalade版本安裝了更舊的版本。 所以我卸載了jedi和相關的依賴項。 我將我的存儲庫設置為MELPA並安裝了更新版本的jedi。 這發了命令

M-x jedi:install-server 

雖然早先不是這樣的。

但是,發出該命令會出錯

python-environment--make-with-runner: Program named "virtualenv" does not exist.

我確保在.bashrc中將virtualenv的位置添加到PATH中。 所以我查找了emacs-jedi問題#158 ,建議安裝exec-path-from-shell。 我從MELPA安裝它並添加了行

(when (memq window-system '(mac ns))
  (exec-path-from-shell-initialize))

以下說明。

使用上面的行重新啟動Emacs會出錯:

Symbol's function definition is void: exec-path-from-shell-initialize

所以我在exec-path-from-shell開發下查找了Autoload問題#3(可以在emacs-jedi問題#177的鏈接中找到這個鏈接)。 根據其中一個解決方案,我重新啟動了我的計算機,卸載並重新安裝了exec-path-from-shell,它神奇地解決了重啟之前存在的問題。

現在我檢查了emacs,如果可以找到virtualenv使用

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.

auto-complete error: (error Server may raise an error. Use "M-x epc:pop-to-last-server-process-buffer RET" to see full traceback:
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: can't open file '/Users/XXX/.emacs.d/elpa/jedi-0.1.2/jediepcserver.py': [Errno 2] No such file or directory`
)

因此,我意識到我必須發出命令:

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中刪除此行后,問題就消失了,現在jedi正常運行。

Marmalade目前包含jedi版本0.1.2 ,但您正在查看版本0.2.0alpha2的文檔。

0.1.2文檔不同的說明

package.el(Marmalade或MELPA)

您可以使用MarmaladeMELPA的 package.el接口安裝Jedi.el。 由於package.el不支持安裝非elisp軟件包,因此需要手動安裝Python部件(請參閱下一節)。

然后在下一節中,重要的一點:

安裝Jedipython-epc

  • make requirements (不需要root權限)或
  • pip install -r requirements.txt如果要確定安裝Python模塊的位置。 您需要root權限(即sudo )才能將其安裝在系統目錄中。

你應該能夠從~/.emacs.d/elpa/jedi-0.1.2/目錄中make requirements ,但像pip install epc jedi這樣的東西也應該有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM