我正在使用 Anaconda python 框架。Anaconda 有自己的虚拟环境系统,我不清楚 virtualenv 是否可以安全地与 Anaconda 一起使用。
Emacs Jedi 似乎需要 virtualenv。它是在“运行时”使用还是仅在安装期间使用?是否可以在没有安装 virtualenv 的情况下使用 Jedi?绝地安装完成后可以卸载 virtualenv 吗?
有没有办法直接向绝地开发者提出这个问题?(找不到方法)
我正在使用 Anaconda python 框架。Anaconda 有自己的虚拟环境系统,我不清楚 virtualenv 是否可以安全地与 Anaconda 一起使用。
Emacs Jedi 似乎需要 virtualenv。它是在“运行时”使用还是仅在安装期间使用?是否可以在没有安装 virtualenv 的情况下使用 Jedi?绝地安装完成后可以卸载 virtualenv 吗?
有没有办法直接向绝地开发者提出这个问题?(找不到方法)
有没有办法直接向绝地开发者提出这个问题?
您可以使用他们的 github 问题跟踪器,它位于此处。
emacs-jedi 网站声明这是virtualenv
可选的,所以我猜 jedi 可以在没有它的情况下工作。如果您可以发布您的安装jedi
方式或安装方式(手动,使用 el-get 或其他方式),那么这里的人将能够更好地帮助您。
更新
这是一种jedi
无需手动安装的方法virtualenv
1)jedi
从 melpa 安装。做,通过按下M-x list-packages
标记包,然后按下安装包(这将安装所有的依赖项就 elisp 而言)jedi
I
X
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-jedi
1)通过做创建一个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)))
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
文档。
这是我设置jedi:server-command
变量的技巧:
(setq jedi:server-command
`("python"
,(concat (file-name-directory
(buffer-file-name
(car
(find-definition-noselect 'jedi:setup nil))))
"jediepcserver.py")))