Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python emacs绝地找不到numpy Completion_Python_Emacs_Numpy_Python Jedi - Fatal编程技术网

Python emacs绝地找不到numpy Completion

Python emacs绝地找不到numpy Completion,python,emacs,numpy,python-jedi,Python,Emacs,Numpy,Python Jedi,我安装了emacs jedi,以便在emacs中完成python的一些代码。总的来说,我必须说我印象深刻!它可以很好地开箱即用,并且可以快速找到内置库的完成。然而,出于科学目的,我使用python,并依靠numpy和scipy进行工作。由于某些原因,我没有得到这些模块的完成 例如: import numpy testVector = numpy.array([1,2,3]) 现在输入testVector。等待,什么也没有出现我可以完成这样的案子。像下面 您可以使用旧的需求模块(jedi、

我安装了emacs jedi,以便在emacs中完成python的一些代码。总的来说,我必须说我印象深刻!它可以很好地开箱即用,并且可以快速找到内置库的完成。然而,出于科学目的,我使用python,并依靠numpy和scipy进行工作。由于某些原因,我没有得到这些模块的完成

例如:

import numpy 

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

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

我可以完成这样的案子。像下面

您可以使用旧的需求模块(jedi、epc、argparse)。
您应该更新它们,然后再试一次。

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


编辑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))
另见:


编辑2

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

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

    这将打开一个干净的(即,它不读取您的设置)Emacs进程,并对jedi.el进行最小设置。让我们看看你是否能完成numpy和scipy

  • 您可以在Emacs中导入numpy和scipy吗?您可以在Emacs和shell中使用不同的环境变量。运行
    M-!python-c'import numpy'RET
    。如果这没有给你一个错误,那么它是好的

  • 能否使用
    env/bin/python
    导入numpy和scipy?最好的方法是从Emacs检查它

    因此,首先进入安装jedi.el的目录(例如,
    C-x C-f~/.emacs.d/el-get/jedi/RET

    然后运行
    M-!env/bin/python-c'import numpy'RET
    。如果这不会给您一个错误,那么应该可以导入numpy和scipy


  • 我希望至少有一个文件夹会给你一个错误,否则我需要考虑另一种可能性。

    尽管在我安装emacs jedi时,el get自动安装了epc和jedi,但我在这些文件夹中进行了git拉取,以确保我有最新版本。我还做了sudopip安装argparse——升级告诉我我已经有了argparse的最新版本。因此,依赖项似乎是最新的,但我仍然没有完成numpy或scpipy。嗯,我使用epc 0.0.3和jedi 0.5b5。请检查您的epc,绝地版本。我只在启动绝地后才这么做,因为在此之前绝地:服务器命令是无效的,绝地:服务器脚本也是无效的。我试着把它放在python模式的钩子中,这样它就只能在jedi:setup之后运行,但会不断出现void变量错误。我不认为我混淆了任何安装方法-我严格按照el get的安装说明进行了安装。Clrification:我首先尝试强制包含numpy路径,如前所述。这没有改变任何事情,仍然没有完成。在使用
    jedi:server脚本之前,只需调用
    (需要'jedi)
    。如果愿意,可以在python模式下调用hook。返回错误消息:mkdir-p elpa EL4T_EMACS=EMACS EMACS=tools/EL4T/EMACS.sh carton install 2>elpa/install.log make:**[elpa]错误127 elpa/install.log读取:/bin/sh:1:carton:not found 2。工作正常3。找不到numpyOK,所以我想
    VIRTUALENV\u SYSTEM\u SITE\u PACKAGES=true make clean requirements
    应该可以解决您的问题。如果它对您有效,我将使用此默认值。