ST3 + Anaconda Python 自动完成无用的建议
ST3 + Anaconda Python autocomplete useless suggestions
我正在尝试将 ST3 配置为 IDE 用于我的 Python 开发。
这是一段代码:
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-设置
{
"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"
]
}
这是我所有已安装软件包的列表:
- 蟒蛇 (v2.1.10)
- 本地历史 (v.2016.09.12.07.22.25)
- 包控制 (v.3.2.1)
- 侧边栏增强
- 主题 - 平面 (v2016.11.07.16.37.27)
我的问题如下:
1.) 如果我输入 ds. 自动完成不会提示 data 或 target , 但它们应该是有效的建议。
2.) 如果我键入 ds. 自动完成建议建议如下:from、if、def 等...我相信自动完成扫描整个文本文件并添加来自字符串的建议在里面。有没有办法禁用它并让它只建议相关的(函数、方法和成员变量)建议?
3.) x 是具有方法 ravel() 的 np.array 类型。再一次,不建议使用这种方法。这真的不是我期望的自动完成功能。
非常感谢任何帮助!
亲切的问候
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 不能为它提供自动完成。
我想补充一点,我找到了一个非常丑陋的解决方法,但可能对其他人有用。
代码片段:
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 的自动完成在 assert 语句后起作用。
看来 Jedi 需要一点提示。
我正在尝试将 ST3 配置为 IDE 用于我的 Python 开发。
这是一段代码:
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-设置
{
"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"
]
}
这是我所有已安装软件包的列表:
- 蟒蛇 (v2.1.10)
- 本地历史 (v.2016.09.12.07.22.25)
- 包控制 (v.3.2.1)
- 侧边栏增强
- 主题 - 平面 (v2016.11.07.16.37.27)
我的问题如下:
1.) 如果我输入 ds. 自动完成不会提示 data 或 target , 但它们应该是有效的建议。
2.) 如果我键入 ds. 自动完成建议建议如下:from、if、def 等...我相信自动完成扫描整个文本文件并添加来自字符串的建议在里面。有没有办法禁用它并让它只建议相关的(函数、方法和成员变量)建议?
3.) x 是具有方法 ravel() 的 np.array 类型。再一次,不建议使用这种方法。这真的不是我期望的自动完成功能。
非常感谢任何帮助! 亲切的问候
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 不能为它提供自动完成。
我想补充一点,我找到了一个非常丑陋的解决方法,但可能对其他人有用。
代码片段:
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 的自动完成在 assert 语句后起作用。
看来 Jedi 需要一点提示。