emacs-jedi没有找到numpy完成

mik*_*ike 8 python emacs numpy python-jedi

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

例:

import numpy 

testVector = numpy.array([1,2,3])
Run Code Online (Sandbox Code Playgroud)

现在输入testVector.等待,没有任何表现

tkf*_*tkf 5

我想知道为什么它不起作用.它看起来像sys.path问题,但它应该没有任何配置工作.但是这里有一个关于蛮力修复的想法.

(1)运行以下脚本获取numpy的加载路径.

import os
import numpy
print(os.path.dirname(os.path.dirname(numpy.__file__)))
Run Code Online (Sandbox Code Playgroud)

(2)jedi:server-args像这样设置强制添加路径.

(setq jedi:server-args
      '("--sys-path" "THE/PRINTED/PATH/FOR/NUMPY"
        "--sys-path" "THE/PRINTED/PATH/FOR/SCIPY"))
Run Code Online (Sandbox Code Playgroud)

另见: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))
Run Code Online (Sandbox Code Playgroud)

另见: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.

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


syo*_*hex 1

我可以完成这样的案例。喜欢关注

在此输入图像描述

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