【问题标题】:PyCharm autocomplete does not work with pygamePyCharm 自动完成功能不适用于 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 方法。

如何学习自动完成工具以深入了解库?

【问题讨论】:

    标签: python pygame pycharm


    【解决方案1】:

    除了创建自己的skeletons,你不能。如果启用以下功能,您可以使 pycharm 更好地完成代码:

    但除此之外,你运气不好。 Python 很难完成代码,因为它是一种动态语言,而且并非所有东西都存在存根(骨架)。

    【讨论】:

    • 为什么 IDE 不能使用自动完成功能强大的 ipython?
    • 因为 iPython 是一个控制台,而 PyCharm 的编辑器是一个编辑器。在 iPython 中,您实际上也在运行一个繁重的调试器,以检查您要求 python 执行的所有操作。
    【解决方案2】:

    我尝试了 Daid 的回答(删除了 init.py 中的 try/except),但没有成功,但非常接近!以下是专门为 pygame 修复它的方法:

    1. 转到您的 pygame 文件夹并在文本编辑器中打开 init.py
    2. 使用 try/except 子句导航到导入部分(第 109 行附近)
    3. 将您想要的模块的格式从 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 自动完成。

    【讨论】:

      猜你喜欢
      • 2012-07-27
      • 2018-01-13
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-05
      • 2016-12-30
      相关资源
      最近更新 更多