【问题标题】:Python: Intellisense doesn't work for Object from modulePython:智能感知不适用于模块中的对象
【发布时间】:2019-12-25 19:15:14
【问题描述】:

我在 Python 中有以下代码,它使用 tweepy 模块与 Twitter 进行交互。下面的代码工作得很好。它通过 @name(在本例中为 testuser)从 Twitter 获取用户,然后打印其显示名称。

import tweepy

... # Initialization of the keys and tokens used below

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

api = tweepy.API(auth)

user = api.get_user("ThePSF")
print(user.name)

输出如预期:

Python Software

问题是 VS Code (autopep8) 中的 Intellisense 不建议 user 的属性和方法,例如 namedescriptionlocation 等...

但 Intellisense 建议我使用 api 的属性和方法,尽管我不知道为什么它适用于那个而不适用于 user 对象。

我已经查看了这个 Github 问题页面,但没有找到 解决方案

https://github.com/Microsoft/vscode-python/issues/647


我做错了什么以至于它没有向我显示 user 对象的 Intellisense?

【问题讨论】:

    标签: python visual-studio-code intellisense


    【解决方案1】:

    您很可能没有做错任何事情,并且 tweepy 的结构只是以一种抑制 IntelliSense 的方式。请确保try the Microsoft language server 看看这是否适合您。

    【讨论】:

    • 它现在向我显示了更多建议,但仍然不是我正在寻找的建议(namedescriptionlocation 等...)。为什么 tweepy 要抑制 IntelliSense?你没有从我上面提到的 Github 问题中得到什么吗?
    • 不是tweepy不想抑制IntelliSense,只是可能是那些属性是通过__getattr__或其他东西动态生成的,在这种情况下,无法推断出潜在的属性用于对象。您可以尝试在github.com/microsoft/python-language-server 上打开一个问题,但请在您希望 IntellISense 的对象上运行dir(),以查看 Python 是否能看到您所追求的属性。
    • 好的,当我在 user 对象上运行 dir() 时,我得到了 83 个名称,这很好。但是为什么 tweepy 会动态生成它们呢?他们不是一直都在吗?还是 Python 语言服务器的问题?
    • Python 足够灵活,不需要提前定义属性,因此它们不一定存在。随意按照我的建议提交 Microsoft 语言服务器的错误。
    【解决方案2】:

    我在全新安装的 Windows 和 Visual Studio 代码上运行 microsoft's python language server 时遇到了同样的问题。

    我尝试了新的Pylance 语言服务器,它成功了。该扩展程序现在作为预览版提供,因此它可能不是百分百稳定,但使用一天后我没有遇到任何问题。从this blogpost from microsoft 判断,这将是未来的首选语言服务器。

    我们的长期计划是将我们的 Microsoft Python 语言服务器用户转移到 Pylance,并最终弃用并删除旧语言服务器作为支持的选项。

    安装 Pylance 扩展并将其设置为语言服务器,在出现提示时单击“是”。也可以在settings.json中手动设置

    "python.languageServer": "Pylance"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      • 2014-07-02
      • 1970-01-01
      相关资源
      最近更新 更多