【发布时间】:2019-10-28 16:06:36
【问题描述】:
我目前正在开发 Sublime Text 3 使用 Jedi - Python 自动完成功能,具体来说,它适用于最基本的东西。 但是我在这种情况下使用它就像在 BeautifulSoup4 中一样
主要问题是,在执行多个点 (.) 方法时无法正确显示补全在一个文件上,完成者必须首先像 .find_all 方法一样看到它,然后它会建议它(但这似乎是 Sublime Text 3 本身的自动完成)。
接下来会发生什么
import requests
from bs4 import BeautifulSoup as Soup // works ok, shows all suggestions
request = requests.get('http://example.com')
soup = Soup(request.text, 'lxml')
main = soup.find('body') // shows find method
//However, No available completions in the next case
second_lookup = main.find('div') // doesn't show any autocompletions/hints when starting w/ .fi..
在寻找任何其他“更深入”的自动完成方法时也是如此。到目前为止,我已经尝试调整 Jedi..settings 文件中的所有设置。这没有帮助,我尝试使用 Anaconda,因为它还有一些额外的工具,包括 Jedi。
这似乎特定于某些库,例如 numpy 和 bs4。
注意:
这并非特定于 Sublime Text 3。 Atom 和类似的 IDEs 也是如此。
【问题讨论】:
-
在
main之后输入.后是否显示任何内容? -
不,它不显示任何完成。它应该显示类方法(来自 bs4)
-
稍后我会检查更多
-
谢谢,希望有人(像你一样)可以澄清更多问题并至少解决这里的问题。就像 pinpoint 一样,绝地核心的 aham 做错了。
-
问题基本上是
bs4.element.Tag._find_all中的代码(这是Soup.find所做的)很难推断,绝地只是不理解它。当我阅读代码时,我什至不太确定返回类型是什么。那么绝地将如何理解......无论如何:解决方案是给 find 方法一个注释以显示它返回的类型。目前还不清楚那里会返回什么。
标签: python sublimetext3 sublime-text-plugin jedi