在Mac上安装pygame时出现sdl.h错误?

时间:2019-12-14 10:19:43

标签: python macos pygame sdl

我正在尝试安装pygame。

我的环境是

macOS 10.14.6 Mohave

Python 3.7.4(从python.org下载)

我正在按照Pygame网站上的说明进行操作,即使用

pip install pygame

但是,此操作失败并出现致命错误,可以概括为致命错误:找不到SDL.h文件。完整安装输出如下所示。

Running setup.py install for pygame ... error
ERROR: Command errored out with exit status 1:
 command: /Library/Frameworks/Python.framework/Versions/3.8/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/tmp/pip-install-mtm_fm2t/pygame/setup.py'"'"'; __file__='"'"'/private/tmp/pip-install-mtm_fm2t/pygame/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/tmp/pip-record-vrvsxslr/install-record.txt --single-version-externally-managed --compile
     cwd: /private/tmp/pip-install-mtm_fm2t/pygame/
Complete output (219 lines):
running install
running build
running build_py
creating build
creating build/lib.macosx-10.9-x86_64-3.8
creating build/lib.macosx-10.9-x86_64-3.8/pygame
copying src_py/surfarray.py -> build/lib.macosx-10.9-x86_64-3.8/pygame
copying src_py/sysfont.py -> build/lib.macosx-10.9-x86_64-3.8/pygame
copying src_py/_camera_vidcapture.py -> build/lib.macosx-10.9-x86_64-3.8/pygame

...whole bunch of copying removed for brevity...

copying examples/pixelarray.py -> build/lib.macosx-10.9-x86_64-3.8/pygame/examples
copying examples/dropevent.py -> build/lib.macosx-10.9-x86_64-3.8/pygame/examples
running build_ext
building 'pygame.gfxdraw' extension
creating build/temp.macosx-10.9-x86_64-3.8
creating build/temp.macosx-10.9-x86_64-3.8/src_c
creating build/temp.macosx-10.9-x86_64-3.8/src_c/SDL_gfx
gcc -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch x86_64 -g -DENABLE_NEWBUF=1 -I/NEED_INC_PATH_FIX -I/Library/Frameworks/Python.framework/Versions/3.8/include/python3.8 -c src_c/gfxdraw.c -o build/temp.macosx-10.9-x86_64-3.8/src_c/gfxdraw.o
In file included from src_c/gfxdraw.c:33:
In file included from src_c/pygame.h:32:
src_c/_pygame.h:216:10: fatal error: 'SDL.h' file not found
#include <SDL.h>
         ^~~~~~~
1 error generated.
---
For help with compilation see:
    https://www.pygame.org/wiki/MacCompile
To contribute to pygame development see:
    https://www.pygame.org/contribute.html
---
error: command 'gcc' failed with exit status 1
ERROR: Command errored out with exit status 1: 
   /Library/Frameworks/Python.framework/Versions/3.8/bin/python3 -u -c 'import sys, 
   setuptools, tokenize; sys.argv[0] = '"'"'/private/tmp/pip-install- 
   mtm_fm2t/pygame/setup.py'"'"'; __file__='"'"'/private/tmp/pip-install- 
  mtm_fm2t/pygame/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/tmp/pip-record-vrvsxslr/install-record.txt --single-version-externally-managed --compile Check the logs for full command output.

在finder中搜索时,文件SDL.h 确实存在,所以我不知道为什么安装失败。

我尝试了以下方法来解决此问题,但没有成功。

  1. 使用pip3安装install pygame
  2. 使用pip3安装install pygame--2.0.0_dev4选项
  3. 我什至尝试下载SDL2源并进行编译。

它们全部失败(SDL make长期失败,并带有围绕lzma.h的错误

任何人都可以在macOS和Python 3.7.4上运行pygame,并且可以提供详细说明和先决条件的列表。

3 个答案:

答案 0 :(得分:4)

我只是为同样的问题而苦苦挣扎,终于能够使用以下命令行在装有Mojave的Mac上安装pygame:

pip3 install pygame --only-binary :all:

这将安装pygame的预编译版本,从而避免了缺少头文件(例如错误消息中的SDL.h)的问题,这是因为pip试图从在{中寻找这些头的源代码中编译pygame {1}}。随着Mojave和Catalina的最新更新,Apple不再具有/usr/include目录。我确实检查了安装有/usr/include选项的pygame的版本,发现它是2.0.0开发人员版本,但到目前为止似乎仍然有效。

答案 1 :(得分:1)

我能够使用easy_install pygame代替pip来解决此问题。我怀疑这与python 3.8有关。

答案 2 :(得分:1)

我在macOS Catalina上安装pygame时非常费力。我尝试创建虚拟环境以及许多其他选项,但没有任何帮助。默认的python位于/usr/bin/python中,而我安装的python3位于/Library/Frameworks/Python.framework/Versions/3.8/bin/python3中,因此我尝试使用pip install pygame而不是使用easy_install-3.8 pygame,它对我和我打开时都有效/Library/Frameworks/Python.framework/Versions/3.8位置的bin文件夹中有一个easy_install-3.8文件。我对此了解不多,但我认为它与python3.8

有关