Python emacs绝地找不到numpy Completion
我安装了emacs jedi,以便在emacs中完成python的一些代码。总的来说,我必须说我印象深刻!它可以很好地开箱即用,并且可以快速找到内置库的完成。然而,出于科学目的,我使用python,并依靠numpy和scipy进行工作。由于某些原因,我没有得到这些模块的完成 例如: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、
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 从你的描述中我不知道为什么会这样。这里有几种缩小问题范围的方法
make-tryout
(如~/.emacs.d/el-get/jedi/
)
这将打开一个干净的(即,它不读取您的设置)Emacs进程,并对jedi.el进行最小设置。让我们看看你是否能完成numpy和scipyM-!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
应该可以解决您的问题。如果它对您有效,我将使用此默认值。