【问题标题】:How to enable autocomplete (IntelliSense) for python package modules?如何为 python 包模块启用自动完成(IntelliSense)?
【发布时间】:2018-12-03 00:28:40
【问题描述】:
这个问题与 Pygame 无关,我以 Pygame 为例。
在尝试 Pygame 时,我注意到自动完成功能不适用于某些模块。例如,如果我开始输入pygame.mixer 自动完成显示MissingModule。在寻找解决方案时,我发现各种文本编辑器和模块有很多类似的问题,这些文本编辑器和模块都有用 C 编写的部分。我使用的是 Visual Studio Code,python 路径设置正确,我的代码运行良好。
一种奇怪的解决方法是修改 Pygame 的 __init__.py
启用自动完成的正确方法是什么?
【问题讨论】:
标签:
python
autocomplete
visual-studio-code
pygame
intellisense
【解决方案1】:
我找到了一个解决方案,但我希望能从 Python 经验丰富的人那里得到一些解释:
import package.module as module
使用 Pygame 混合器是:
import pygame.mixer as mixer
但我仍然不明白为什么 import.package.module 的自动完成功能不起作用,而 import.package.module as module 却可以。
【解决方案2】:
可能pygame.mixer 不适用于import pygame,因为pygame 包 中没有mixer 属性。如果属性不存在 autcomplete 将不会列出它。
当您导入包时,Python 不会递归地导入子包和模块,除非在包内的“__init__.py”文件中明确指定。
这就是import pygame.mixer as mixer 起作用的原因,因为您导入了pygame 包和 mixer 模块(?),它可以通过本地名称mixer 获得。但是,通过此类导入,您在本地范围内没有可用的 pygame。
类似的情况是你只是import pygame.mixer。 pygame 可用,但 mixer 必须由 pygame.mixer 引用。
在这两种情况下,pygame 包和 pygame.mixer 模块(?)都会被执行。
如果您想重命名,也可以使用from pygame import mixer 代替import pygame.mixer as mixer 或from pygame import mixer as module。
【解决方案3】:
尝试:
从 pygame 导入 *
现在您可以看到嵌套的自动完成选项。