PyCharm autocomplete does not work with pygame

2019-03-20 12:05发布

问题:

I've just installed PyCharm Community Edition 3.4.1 and tried to make a simple pygame project in it. I found that code completion runs in a weird way. In this case:

from pygame import event
event.

when I type event. a completion popup with event methods shows immediately. But in the second case:

import pygame
pygame.event.

a popup contains only object methods.

How can I learn the autocomplete tool to look deeper into the library?

回答1:

Other than creating your own skeletons, you can't. You can make pycharm a little better a code completion if you enable the following:

But other than that, you're out of luck. Python is hard to make code completion for because its a dynamic language, and stubs (skeletons) don't exist for everything.



回答2:

I tried Daid's answer (removing the try/except in init.py) and it didn't work, but it was very close! Here is how you can fix it specifically for pygame:

  1. Go to your pygame folder and open init.py in a text editor
  2. Navigate to the import section with the try/except clauses (around line 109)
  3. Change the format from import pygame.module to from pygame import module for the modules you want

For example, change

try: import pygame.event

to

try: from pygame import event

Restart PyCharm and it should work :)



回答3:

It has to do with how pygame is constructed.

The:

python\Lib\site-packages\pygame\__init__.py

File contains the following construction:

try: import pygame.cdrom
except (ImportError,IOError):cdrom=MissingModule("cdrom", geterror(), 1)

Which allows missing imports. However, this confuses pycharm. Removing the try+except will fix the pycharm auto completion.