这个问题与Pygame无关,我以Pygame为例。
在尝试Pygame时,我注意到自动完成功能不适用于某些模块。例如,如果我开始输入pygame.mixer
,则自动完成功能将显示MissingModule
。在寻找解决方案时,对于使用C语言编写的各种文本编辑器和模块,我发现了很多类似的问题。我使用的是Visual Studio Code,python路径设置正确,我的代码运行良好。
一种奇怪的解决方法是修改Pygame的__init__.py
启用自动完成功能的正确方法是什么?
答案 0 :(得分:1)
我已经找到了解决方案,但是我希望从对Python有经验的人那里得到一些解释:
import package.module as module
使用Pygame调音台:
import pygame.mixer as mixer
但是我仍然不明白为什么import.package.module
的自动完成功能不起作用,而import.package.module as module
的自动完成功能却如此。
答案 1 :(得分:1)
(change)
可能不适用于(change)
,因为pygame.mixer
包中没有属性import pygame
。如果不存在该属性,则autcomplete不会列出该属性。
导入包时,Python不会递归地导入子包和模块,除非在包内的“ __init__.py”文件中明确分配了子包和模块。
这就是mixer
之所以起作用的原因,因为您导入了pygame
包和 import pygame.mixer as mixer
模块(?),可通过本地名称pygame
使用。但是,使用这种导入,您在本地范围内没有mixer
。
类似的情况是您只是mixer
。 pygame
可用,但import pygame.mixer
必须引用pygame
。
在两种情况下都执行mixer
软件包和pygame.mixer
模块(?)。
如果要重命名,也可以使用pygame
代替pygame.mixer
或from pygame import mixer
。
答案 2 :(得分:0)
尝试: 从pygame导入*
现在您可以看到嵌套的自动完成选项。