【问题标题】:How to get PyCharm IDE to do code completion for pygame's sub-modules?如何让 PyC​​harm IDE 为 pygame 的子模块完成代码?
【发布时间】:2015-05-05 19:57:50
【问题描述】:

简介:pygame 是一个用于创建游戏的python 模块。我已经正确安装了模块并且我的 PyCharm 成功导入了它。

我将直接跳到一个示例场景:

尝试使用pygame下的子模块“image”的get code完成效果很好:

pygame.image

当我进一步输入并尝试在图像下获得代码完成时,它不起作用:

pygame.image.  # shows a suggestions list, but list doesn't contain any
               # function names under the pygame.image sub-module

我已经尝试了很多年。 PyCharm 中的 python 控制台可以做到这一点(它使用 IPython,如果我错了,请纠正我)但编辑器不能。

PS 很抱歉没有显示以上截图,我没有足够的 stackoverflow 点来发布图片

【问题讨论】:

  • JetBrains 是一个通用 IDE。 IntelliJ 的自动完成功能与它们用于 PyCharm 和所有其他环境的自动完成功能相同。因此,自动补全源自您现有的代码,而不是语言的模块。
  • @MalikBrahimi 嗯,可能是这样,因为我在 NinjaIDE、IPython 和 IDLE 中成功完成了代码。只是不是 PyCharm。那么 PyCharm 是否没有办法递归搜索导入模块中的所有子模块,并帮助代码完成?
  • 如果我的回答对您有帮助,您能否标记为答案?
  • 您是在虚拟环境中工作还是在您的系统 Python 中安装了 pygame?
  • @IanAuld 它已安装到我的系统 python

标签: python python-2.7 pycharm


【解决方案1】:

JetBrains 是一个通用 IDE。 IntelliJ 的自动完成功能与它们用于 PyCharm 和所有其他环境的自动完成功能相同。因此,自动完成是从您现有的代码中派生的,而不是从语言的模块中派生的。请参阅here 了解更多信息。

【讨论】:

  • 也就是说,我相信如果你将包目录添加到你的项目中,IDE 会索引它们并提供某种程度的自动完成......问题是,我不知道该怎么做这副手...
  • 其他帖子的链接有一些可能的解决方案,谢谢。我建议您编辑您的答案以包括 PyCharm 确实对导入的模块具有自动完成功能,但它只是 子模块 您不会自动完成工作(除非他们每个人都是单独进口的)
【解决方案2】:

以下是专门针对 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,它应该可以工作 :)

【讨论】:

    【解决方案3】:

    这是我糟糕的解决方案...我基本上会导入我认为我需要的那些,如果我需要像时钟这样的东西,如果我要经常使用它,我会把它添加到顶部。

    import pygame
    
    import pygame.draw as draw
    import pygame.cursors as cursors
    import pygame.math as math
    import pygame.display as display
    import pygame.event as event
    import pygame.image as image
    import pygame.joystick as joystick
    import pygame.key as key
    import pygame.mouse as mouse
    import pygame.sprite as sprite
    import pygame.threads as threads
    

    看起来很糟糕,但自动完成功能有效。

    【讨论】:

      猜你喜欢
      • 2020-07-31
      • 2011-07-15
      • 2021-01-29
      • 2015-12-16
      • 2013-09-26
      • 2016-11-09
      • 2020-01-27
      • 2016-09-17
      • 1970-01-01
      相关资源
      最近更新 更多