我正在尝试安装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 确实存在,所以我不知道为什么安装失败。
我尝试了以下方法来解决此问题,但没有成功。
它们全部失败(SDL make长期失败,并带有围绕lzma.h的错误
任何人都可以在macOS和Python 3.7.4上运行pygame,并且可以提供详细说明和先决条件的列表。
答案 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