我安装了 emacs-jedi 以在 emacs 中为 python 完成一些代码。总的来说,我必须说我印象深刻!它开箱即用,可以快速找到内置库的补全。但是,我将 python 用于科学目的,并依赖 numpy 和 scipy 来完成我的工作。出于某种原因,我没有完成这些模块。
例子:
import numpy
testVector = numpy.array([1,2,3])
现在输入 testVector。等待,什么都没有出现
我安装了 emacs-jedi 以在 emacs 中为 python 完成一些代码。总的来说,我必须说我印象深刻!它开箱即用,可以快速找到内置库的补全。但是,我将 python 用于科学目的,并依赖 numpy 和 scipy 来完成我的工作。出于某种原因,我没有完成这些模块。
例子:
import numpy
testVector = numpy.array([1,2,3])
现在输入 testVector。等待,什么都没有出现
我想知道为什么它不起作用。它看起来像sys.path
问题,但它应该在没有任何配置的情况下工作。但这里有一些蛮力修复的想法。
(1) 运行以下脚本获取 numpy 的加载路径。
import os
import numpy
print(os.path.dirname(os.path.dirname(numpy.__file__)))
(2)jedi:server-args
这样设置强制添加路径。
(setq jedi:server-args
'("--sys-path" "THE/PRINTED/PATH/FOR/NUMPY"
"--sys-path" "THE/PRINTED/PATH/FOR/SCIPY"))
另见:http ://tkf.github.com/emacs-jedi/#jedi:server-args
编辑 1
阅读您对@syohex 答案的评论,您似乎混淆了一些安装方法。jeid.el 使用您拥有 jedi.el 的目录中的 virtualenv“env/”(如果存在)。如果你有 virtualenv,el-get 会自动创建“env/”。所以,如果你喜欢系统安装,你需要告诉 Jedi.el 忽略 "evn/" 通过这样做:
(require 'jedi)
(setq jedi:server-command (list "python" jedi:server-script))
另见:http ://tkf.github.com/emacs-jedi/#jedi:server-command
编辑 2
我不知道为什么从你的描述中会发生这种情况。这里有几种方法可以缩小问题的范围。
make tryout
在 jedi.el 安装的目录下运行(如)~/.emacs.d/el-get/jedi/
。
这将打开一个干净的(即,它不会读取您的设置)Emacs 进程,并为 jedi.el 设置最少的设置。看看能不能完成numpy和scipy。
你能在 Emacs 中导入 numpy 和 scipy吗?你可以在 Emacs 和 shell 中有不同的环境变量。运行M-! python -c 'import numpy' RET
。如果这没有给您错误,那很好。
您可以使用 numpy 和 scipy 导入env/bin/python
吗?最好的方法是从 Emacs 检查它。
所以首先进入jedi.el 的安装目录(例如,C-x C-f ~/.emacs.d/el-get/jedi/ RET
)。
然后运行M-! env/bin/python -c 'import numpy' RET
。如果这没有给您错误,那么应该可以导入 numpy 和 scipy。
我希望其中至少有一个给你一个错误,否则我需要考虑另一种可能性。
我可以完成这种情况。喜欢以下
您可以使用旧的需求模块(jedi、epc、argparse)。您应该更新它们并重试。