9

我安装了 emacs-jedi 以在 emacs 中为 python 完成一些代码。总的来说,我必须说我印象深刻!它开箱即用,可以快速找到内置库的补全。但是,我将 python 用于科学目的,并依赖 numpy 和 scipy 来完成我的工作。出于某种原因,我没有完成这些模块。

例子:

import numpy 

testVector = numpy.array([1,2,3])

现在输入 testVector。等待,什么都没有出现

4

2 回答 2

6

我想知道为什么它不起作用。它看起来像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

我不知道为什么从你的描述中会发生这种情况。这里有几种方法可以缩小问题的范围。

  1. make tryout在 jedi.el 安装的目录下运行(如)~/.emacs.d/el-get/jedi/

    这将打开一个干净的(即,它不会读取您的设置)Emacs 进程,并为 jedi.el 设置最少的设置。看看能不能完成numpy和scipy。

  2. 你能在 Emacs 中导入 numpy 和 scipy吗?你可以在 Emacs 和 shell 中有不同的环境变量。运行M-! python -c 'import numpy' RET。如果这没有给您错误,那很好。

  3. 您可以使用 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。

我希望其中至少有一个给你一个错误,否则我需要考虑另一种可能性。

于 2013-02-06T00:37:45.607 回答
1

我可以完成这种情况。喜欢以下

在此处输入图像描述

您可以使用旧的需求模块(jedi、epc、argparse)。您应该更新它们并重试。

于 2013-02-05T14:38:34.670 回答