使用 pip 安装 pygame 遇到的问题

今天尝试学习使用 pygame 时,按照我的习惯一发 pip install 下去,本以为很简单的事情,没想到遇到了不少问题,顺手记录一下。

0x01. 无法找到 “SDL.h” 文件

pygame 是使用 SDL 库写就的游戏框架,自然强依赖于 SDL,我的 python@3 是使用 macOSbrew 管理器直接安装的,可能由于不是编译安装的问题,缺少了这个库,继续使用 brew 安装一下就好:

$ brew install sdl sdl-image   # 注意别装 sdl2,名字不一样

0x02. pygame.error: File is not a Windows BMP file

这个问题我翻遍了 stackoverflow 和 github issues 也没有找到准确的解决方案,最终在这个问题找到了一些端倪,最后发现了一个意想不到的 bug。

正常情况我都会默认从 pip 安装的包是没有问题的,但是在翻看了 pygame 的源码之后,我确信我的代码没有问题,并且 pygame 也是正确安装的。

在了解到 pygame 曾是基于 PIL 来进行图片解析后,我也尝试过通过 pip install PIL 来安装 PIL,但随后我了解到这个包在 python3 中已经被弃用了,也就是说 pygame==1.9.0 不可能依赖于这个包。

这时候我开始怀疑 pip install 的内容是否完整了,在翻看了通过 pip 下载安装的 pygame 源码确认无误后,我尝试了重装但没有解决,接着我通过 pip uninstall pygame 卸载了 pygame 后,换用了下面的命令重新安装:

$ sudo -H python -m pip install -U pygame --user

注意到编译的部分明显变成长了以后,我意识到这次应该对了,我使用以下命令测试了 pygame.image.load() 方法:

$ python pygame.examples.aliens.py

没有问题。

这个问题之所以很难想到其实主要是我的惯性思维的问题,如果我第一时间尝试下载 .whl 文件编译安装就应该不会遇到这些问题,但也同样让我见识了第三方包管理器的不靠谱,还是应该养成从源码编译安装的好习惯。

参考链接

  1. Pygame Error: File is not a windows BMP file
  2. [How to uninstall pygame on mac OSX 10.9.4
    ](https://stackoverflow.com/questions/2(5120883/how-to-uninstall-pygame-on-mac-osx-10-9-4)
  3. pygame/aliens.py at master · pygame/pygame

你可能感兴趣的:(Python)