PyCharm 自动完成功能不适用于 pygame
Posted
技术标签:
【中文标题】PyCharm 自动完成功能不适用于 pygame【英文标题】:PyCharm autocomplete does not work with pygame 【发布时间】:2014-12-04 08:19:27 【问题描述】:我刚刚安装了 PyCharm Community Edition 3.4.1 并尝试在其中制作一个简单的 pygame 项目。我发现代码完成以一种奇怪的方式运行。在这种情况下:
from pygame import event
event.
当我输入event.
时,会立即显示带有event
方法的完成弹出窗口。但在第二种情况下:
import pygame
pygame.event.
弹出窗口仅包含 object
方法。
如何学习自动完成工具以深入了解库?
【问题讨论】:
【参考方案1】:除了创建自己的skeletons,你不能。如果启用以下功能,您可以使 pycharm 更好地完成代码:
但除此之外,你运气不好。 Python 很难完成代码,因为它是一种动态语言,而且并非所有东西都存在存根(骨架)。
【讨论】:
为什么 IDE 不能使用自动完成功能强大的 ipython? 因为 iPython 是一个控制台,而 PyCharm 的编辑器是一个编辑器。在 iPython 中,您实际上也在运行一个繁重的调试器,以检查您要求 python 执行的所有操作。【参考方案2】:我尝试了 Daid 的回答(删除了 init.py 中的 try/except),但没有成功,但非常接近!以下是专门为 pygame 修复它的方法:
-
转到您的 pygame 文件夹并在文本编辑器中打开 init.py
使用 try/except 子句导航到导入部分(第 109 行附近)
将您想要的模块的格式从 import pygame.module 更改为 from pygame import module
例如,改变
try: import pygame.event
到
try: from pygame import event
重新启动 PyCharm,它应该可以工作 :)
【讨论】:
我已按照您的建议更改了导入语句,此外还触发了 File → Invalidate Caches / Restart(花费了 30 多分钟!),现在自动完成功能适用于 pygame(大部分情况下)。不幸的是,PyCharm 在检查过程中仍然会收集类似这样的错误:“在 'image.py' 中找不到参考 'load'。无论如何,谢谢!【参考方案3】:这与 pygame 的构建方式有关。
:
python\Lib\site-packages\pygame\__init__.py
文件包含以下结构:
try: import pygame.cdrom
except (ImportError,IOError):cdrom=MissingModule("cdrom", geterror(), 1)
允许缺少导入。但是,这使 pycharm 感到困惑。删除 try+except 将修复 pycharm 自动完成。
【讨论】:
以上是关于PyCharm 自动完成功能不适用于 pygame的主要内容,如果未能解决你的问题,请参考以下文章
新手求教:为啥pycharm中import pygame不成功?我在python(x,y)中是可以import pygame成功,谢谢