簡體   English   中英

Emacs:即使安裝了 `virtualenv`,`jedi:install-server` 也會失敗

[英]Emacs: `jedi:install-server` fails even though `virtualenv` is installed

我正在嘗試根據本手冊為 Emacs 安裝 JEDI 自動完成功能。

當我輸入Mx jedi:install-server ,出現錯誤Program named "virtualenv" does not exist 我遵循了這個答案中的建議,並使用pip install virtualenv安裝了它。 現在,當我在終端中輸入virtualenv時,我得到以下輸出:

usage: virtualenv [--version] [--with-traceback] [-v | -q] [--app-data APP_DATA] [--clear-app-data] [--discovery {builtin}] [-p py] [--creator {builtin,cpython3-posix,venv}] [--seeder {app-data,pip}] [--no-seed]
                  [--activators comma_sep_list] [--clear] [--system-site-packages] [--symlinks | --copies] [--download | --no-download] [--extra-search-dir d [d ...]] [--pip version] [--setuptools version] [--wheel version] [--no-pip]
                  [--no-setuptools] [--no-wheel] [--symlink-app-data] [--prompt prompt] [-h]
                  dest
virtualenv: error: the following arguments are required: dest

然后我重新啟動,輸入Mx jedi:install-server ,但我仍然得到同樣的錯誤。

我在 Linux Mint 19.3 Tricia 上使用 2019-12-03 的 GNU Emacs 26.3(build 1,x86_64-pc-linux-gnu,GTK+ 版本 3.22.30)。

如何修復此錯誤並開始使用 JEDI 自動完成功能?

更新 1:此外,每當我打開 Python 文件時,都會收到此警告

*** EPC Server Config ***
Server arguments: ("/usr/bin/python" "/home/XXXXXXX/.emacs.d/elpa/jedi-core-20191011.1750/jediepcserver.py")
Actual command: /usr/bin/python
VIRTUAL_ENV envvar: nil

*** jedi-mode is disabled in #<buffer createPageStructure.py> ***
Fix the problem and re-enable it.

*** 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.

我有一個類似的問題,我也在使用 Linux Mint Tricia。 我想使用 company-jedi 而不是 jedi-ac

就我而言,我希望絕地武士和 emacs 使用 python3.8。 所以我想要基於python3.8的絕地virtualenv。

Jedi virtualenv 是通過使用 emacs-python-enviroment 包創建的。

我的問題似乎來自這樣一個事實,即 emacs-python-enviroment 默認使用選項“--system-site-package”,所以我有很多錯誤,因為系統 python3 是 python3.6 而我沒有(我不想)在系統范圍的python3中安裝了所有需要的包。

我解決了向 emacs-python-enviroment 添加選項“--no-site-package”(見這個)的問題

emacs-python-enviroment 用於創建 jedi virtualenv,命名為“default”並位於“~/.emacs.d/.python-enviroments/”中,如果需要,您可以配置此 virtualenv 的不同名稱和位置(對於更多信息請看這個

這是我的工作配置。 您可以指定不同的 python 而不是 python3.8(我使用的那個)

 (setq python-shell-interpreter "/usr/bin/python3.8")
 (setq py-python-command "/usr/bin/python3.8")        ; maybe not needed
 (setq python-python-command "/usr/bin/python3.8")    ; maybe not needed

 (use-package company-jedi             ;;; company-mode completion back-end for Python JEDI
   :ensure t
   :config
   (setq jedi:environment-virtualenv
         (append python-environment-virtualenv
                 '("--no-site-packages" "--python" "/usr/bin/python3.8")))
   ;;(setq jedi:environment-virtualenv (list (expand-file-name "~/.emacs.d/.python-environments/")))
   (add-hook 'python-mode-hook 'jedi:setup)
   (setq jedi:complete-on-dot t)
   (setq jedi:use-shortcuts t)
   (defun config/enable-company-jedi ()
     (add-to-list 'company-backends 'company-jedi))
   (add-hook 'python-mode-hook 'config/enable-company-jedi)
   )

我不再使用jedi並切換到lsp-mode ,但下面是我使用company-jedi進行 Python 完成的舊工作配置。 python-mode被加載時,它會調用jedi:install-server-block來安裝 jedi 支持,如果它沒有安裝的話。 您可能需要檢查*Messages*緩沖區以查看它是否打印出Installing jedi server... 希望這會有所幫助。

(use-package company-jedi
  :if (executable-find "virtualenv")
  :ensure t
  :bind
  (:map python-mode-map
        ("M-." . jedi:goto-definition)
        ("M-," . jedi:goto-definition-pop-marker))
  :config
  (unless (file-exists-p
           (expand-file-name
            ".python-environments" user-emacs-directory))
    (message "Installing jedi server...")
    (jedi:install-server-block)
    (message "Installing jedi server...done"))
  :hook
  (python-mode
   . (lambda ()
       (setq-local company-backends
                   (append (list 'company-jedi) company-backends)))))

以這種方式將上面警告中顯示的“服務器參數”添加到 .emacs 文件中。

(setq jedi:server-command ("/usr/bin/python" "/home/XXXXXXX/.emacs.d/elpa/jedi-core-20191011.1750/jediepcserver.py"))

暫無
暫無

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

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