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成功,谢谢

jQuery .val() 不适用于 jQueryUI 自动完成功能

自动完成功能不适用于新的 SWIFT 文件/类

Eclipse 自动完成功能不适用于 PHP 项目

jquery 自动完成功能不适用于重音

PyCharm 中用于 Python 编译扩展的自动完成功能