Как включить автозаполнение (IntelliSense) для модулей пакета Python? - PullRequest
0 голосов
/ 24 июня 2018

Этот вопрос не о Pygame, я использую его в качестве примера.

Экспериментируя с Pygame, я заметил, что автозаполнение не работает для некоторых модулей. Например, если я начну печатать pygame.mixer, автозаполнение покажет MissingModule. При поиске решения я нашел много похожих вопросов для различных текстовых редакторов и модулей, в которых есть части, написанные на C. Я использую код Visual Studio, путь к Python задан правильно, и мой код работает нормально. Один странный обходной путь - модификация Pygame __init__.pyenter image description here Как правильно включить автозаполнение?

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Вероятно, pygame.mixer не работает с import pygame, поскольку в pygame package отсутствует атрибут mixer. Если атрибут отсутствует, автозаполнение не будет отображать его.

Когда вы импортируете пакет, 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, если хотите переименовать.

0 голосов
/ 26 июня 2018

Я нашел решение, но я был бы признателен за разъяснения кого-то более опытного в Python:

import package.module as module

С микшером Pygame это:

import pygame.mixer as mixer 

enter image description here

Но я до сих пор не понимаю, почему автозаполнение для import.package.module не работает, а import.package.module as module работает.

...