簡體   English   中英

如何為 python 包模塊啟用自動完成(智能感知)?

[英]How to enable autocomplete (IntelliSense) for python package modules?

這個問題與 Pygame 無關,我以 Pygame 為例。

在嘗試 Pygame 時,我注意到自動完成功能不適用於某些模塊。 例如,如果我開始輸入pygame.mixer自動完成顯示MissingModule 在尋找解決方案時,我發現了許多類似的問題,這些問題涉及用 C 編寫的各種文本編輯器和模塊。我使用的是 Visual Studio Code,python 路徑設置正確,我的代碼運行良好。 一種奇怪的解決方法是修改 Pygame 的__init__.py 在此處輸入圖片說明 啟用自動完成的正確方法是什么?

我找到了一個解決方案,但我希望能從對 Python 更有經驗的人那里得到一些解釋:

import package.module as module

使用 Pygame 混合器,它是:

import pygame.mixer as mixer 

在此處輸入圖片說明

但我仍然不明白為什么import.package.module自動完成不起作用,但import.package.module as module一樣。

可能pygame.mixer不能與import pygame因為pygame package 中沒有屬性mixer 如果屬性不存在,則 autcomplete 不會列出它。

導入包時,除非在包內的“__init__.py”文件中明確指定,否則 Python 不會遞歸導入子包和模塊。

這就是import pygame.mixer as mixer工作的原因,因為您導入了pygamemixer模塊(?),它們可以通過本地名稱mixer 但是,通過這種導入,您在本地范圍內沒有可用的pygame

類似的情況是當您只import pygame.mixer pygame可用,但mixer必須由pygame.mixer引用。

在這兩種情況下, pygame包和pygame.mixer模塊(?)都被執行。

如果您想重命名,您也可以使用from pygame import mixer而不是import pygame.mixer as mixerfrom pygame import mixer as module

嘗試:從 pygame 導入 *

現在您可以看到嵌套的自動完成選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM