ST3 + Anaconda Python自动完成无用的建议

时间:2016-11-27 00:51:43

标签: python autocomplete sublimetext3 anaconda

我正在尝试将ST3配置为我的Python开发的IDE。

以下是一段代码:

from __future__ import division
from sklearn import datasets
import numpy as np
def main():
    ds = datasets.load_boston()
    x = ds.data
    y = ds.target
    x.ravel()
if __name__ == '__main__':
    main()

以下是我的Preferences.sublime-settings设置:

{
"color_scheme": "Packages/Theme - Flatland/Flatland Dark.tmTheme",
"theme": "Flatland Dark.sublime-theme",
"flatland_sidebar_tree_xsmall": false,
"flatland_square_tabs": true,

"auto_complete_delay": 10,
"auto_complete_triggers":
[
    {
        "characters": ".",
        "selector": "source.python - string - comment - constant.numeric"
    }
],

"font_size": 12,
"tab_size": 4,
"translate_tabs_to_spaces": true,

"caret_extra_bottom": 1,
"caret_extra_top": 1,
"caret_extra_width": 1.2,
}

这是我的Anaconda.sublime-settings

{
"anaconda_linter_mark_style": "none",
"anaconda_linter_underlines": false,
"suppress_word_completions": true,
"suppress_explicit_completions": true,
"enable_signatures_tooltip": true,
"merge_signatures_and_doc": true,
"pep8_ignore":
[
    "E305",
    "E309",
    "E501",
    "E112",
    "W291"
]
}

以下是我所有已安装软件包的列表:

  • Anaconda(v2.1.10)
  • 当地历史(v.2016.09.12.07.22.25)
  • 包裹控制(v.3.2.1)
  • SideBarEnhancements
  • 主题 - 平地(v2016.11.07.16.37.27)

我的问题如下:

1。)如果我输入 ds。自动填充不建议数据目标,但它们应该是有效的建议。

2。)如果我输入 ds。自动填充建议建议,例如:from,if,def等...我相信自动完成扫描整个文本文件并添加字符串中的建议。有没有办法禁用它并使其仅建议相关的(函数,方法和成员变量)建议?

3。) x np.array 类型,其中包含方法ravel()。再一次,不建议使用此方法。这真的不是我对自动完成的期望。

非常感谢任何帮助! 亲切的问候

2 个答案:

答案 0 :(得分:1)

Jedi(anaconda用于提供自动完成的库)中存在已知问题,无法完成NumPy和其他科学库。例如 https://github.com/davidhalter/jedi/issues/372

关于NumPy的未解决问题的完整列表(可能其中一些是重复的):https://github.com/davidhalter/jedi/search?q=numpy&state=open&type=Issues&utf8=%E2%9C%93

这就是为什么你没有完成NumPy阵列的完成,恢复,目前anaconda无法为你提供NumPy的自动完成,因为Jedi不能为它提供自动完成。

答案 1 :(得分:0)

我想补充一点,我发现了一个非常难看的解决方法,但可能对其他人有用。

代码片段:

from __future__ import division
from sklearn import datasets
import numpy as np
def main():
    ds = datasets.load_boston()
    x = ds.data
    y = ds.target
    assert isinstance(x, np.ndarray)
    x.ravel()         # Autocomplete for x now works.

if __name__ == '__main__':
    main()

在断言声明后,numpy的自动完成工作。

似乎绝地需要一点暗示。