5

我正在使用 Anaconda python 框架。Anaconda 有自己的虚拟环境系统,我不清楚 virtualenv 是否可以安全地与 Anaconda 一起使用。

Emacs Jedi 似乎需要 virtualenv。它是在“运行时”使用还是仅在安装期间使用?是否可以在没有安装 virtualenv 的情况下使用 Jedi?绝地安装完成后可以卸载 virtualenv 吗?

有没有办法直接向绝地开发者提出这个问题?(找不到方法)

4

3 回答 3

4

有没有办法直接向绝地开发者提出这个问题?

您可以使用他们的 github 问题跟踪器,它位于此处

emacs-jedi 网站声明这是virtualenv可选的,所以我猜 jedi 可以在没有它的情况下工作。如果您可以发布您的安装jedi方式或安装方式(手动,使用 el-get 或其他方式),那么这里的人将能够更好地帮助您。

更新

这是一种jedi无需手动安装的方法virtualenv

1)jedi从 melpa 安装。做,通过按下M-x list-packages标记包,然后按下安装包(这将安装所有的依赖项就 elisp 而言)jediIX

2)然后安装python依赖,你可以从这里下载requirements.txt然后做pip install -r requirements.txt,这将安装python依赖。

3)当你打开python文件时添加一个python-mode hook来启动jedi,基本上将以下内容添加到你的init文件中

(autoload 'jedi:setup "jedi" nil t)
(add-hook 'python-mode-hook 'jedi:setup)

以上应该设置绝地,如果您在上述任何步骤中遇到问题,请随时询问

更新 2

以下是使 emacs-jedi 与“conda 环境框架”一起工作的步骤(我使用了 miniconda,但即使安装了完整的 conda 也应该可以工作)

emacs-jedi1)通过做创建一个conda环境(例如,环境被命名为)

conda create -n emacs-jedi python

2)为jedi、epc和sexpdata构建包(emacs-jedi需要)

a) 克隆conda-recipes存储库

b)通过执行构建所需的包conda build /path/to/conda-recipies/<pkgname>

3)通过do切换到上面创建的环境source activate emacs-jedi并通过do安装上面构建的包

conda install --use-local jedi sexpdata epc

--use-local用于指示 conda 从本地构建的包中安装

4)最后指示emacs将这个环境与jedi一起使用,这只需将以下内容添加到您的init文件中

(eval-after-load "jedi"
    '(setq jedi:server-command (list "/path/to/emacs-jedi/bin/python" jedi:server-script)))
于 2014-02-11T14:26:01.020 回答
2

Jedi.el 开发人员在这里。从 Jedi.el v0.2.0 开始,virtualenv 成为默认设置并强烈推荐。仍然支持手动安装,但不鼓励手动安装,因为您需要手动同步 Jedi.el 和 Python 模块的版本。看:

我不知道 anaconda 是什么,但我想这里它有自己的环境。如果它只是 virtualenv 的包装,那么按照手册中的说明使用--virtual-env. 如果没有,你可以--sys-path告诉 Jedi.el 额外的站点路径。看:

首先,您需要找到特定于 anaconda 的站点路径。跑

python -c 'import sys; print(sys.path)'

在 anaconda 中并找到一些 anaconda 特定的路径(我不知道它会是什么。但我猜它在路径中包含“anaconda”)。然后使用添加这些路径--sys-path。代码见jedi:server-args文档。

于 2014-03-13T22:02:15.230 回答
0

这是我设置jedi:server-command变量的技巧:

(setq jedi:server-command
        `("python"
          ,(concat (file-name-directory
                   (buffer-file-name
                    (car
                     (find-definition-noselect 'jedi:setup nil))))
                  "jediepcserver.py")))
于 2016-02-09T22:03:33.863 回答