在Mac OSX 10.9上为Python 3.3编译Pygame 1.9.1

时间:2014-02-28 03:32:44

标签: python macos python-3.x pygame osx-mavericks

我首先要说的是,在这里提问不是我轻易做的事情。我现在一直试图从源代码安装Pygame 1.9.1四个小时,我遇到了几个问题但是能够克服每个问题。这是我完全难以接受的第一个。

解压缩pygame-1.9.1release.tar.gz并cd到文件夹后,运行'python3 setup.py install'

/Library/Frameworks/SDL.framework/Versions/Current/Headers/SDL_syswm.h:58:10: fatal error: 'X11/Xlib.h' file not found
#include <X11/Xlib.h>
1 error generated.
error: command '/usr/bin/clang' failed with exit status 1

经过一些在线研究后,我读到X11不再包含在OSX 10.9中了,所以我安装了XQuartz,希望它可以作为替代品。

Xquartz确实包含'Xlib.h',但它的文件路径是/opt/X11/include/X11/Xlib.h,并且安装脚本在此处找不到它。我已经尝试了几种方法来解决这个问题。

错误过程专门出现在安装的构建部分中。我尝试过使用

python3 setup.py config --include-dirs /opt/X11/include

以及

python3 setup.py config --include-dirs /opt/X11/include/X11

但得到同样的错误。

我在网上读到安装Xcode命令行工具可以解决这个问题。我敢〜95%确定我之前有过命令行工具,但我试图再次使用'xcode-select --install'再次获取它们只是被告知'无法安装软件,因为它目前无法从软件更新服务器'。 “没问题,”我告诉自己,只是从Mac开发者网站下载软件包。它没有任何帮助。

我也尝试使用命令

进行符号链接
sudo ln -s /usr/include/X11 /opt/X11/include/X11

在我尝试的所有内容中,我至少理解这一点,我是否可以将symlink命令做错。

我尝试的其他两个命令是

export C_INCLUDE_PATH=/opt/X11/include
export CPLUS_INCLUDE_PATH=/opt/X11/include

只是查看文档,我遇到了启动脚本的调试选项。 'python3 setup.py build -g'的输出是

running build
running build_py
running build_ext
building 'pygame.display' extension
/usr/bin/clang -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -arch i386 -arch x86_64 -g -g -Ddarwin -I/Library/Frameworks/SDL.framework/Versions/Current/Headers -I/Library/Frameworks/Python.framework/Versions/3.3/include/python3.3m -c src/display.c -o build/temp.macosx-10.6-intel-3.3/src/display.o
In file included from src/display.c:30:
/Library/Frameworks/SDL.framework/Versions/Current/Headers/SDL_syswm.h:58:10: fatal error: 'X11/Xlib.h' file not found
#include <X11/Xlib.h>
         ^
1 error generated.
error: command '/usr/bin/clang' failed with exit status 1

我不确定我还能做些什么,但我真的很感激一些帮助。提前谢谢!

2 个答案:

答案 0 :(得分:1)

我在尝试将pygame安装到我的PyCharm项目的virtualenv时遇到了类似的错误。我通过cd解决了发生错误的SDL Framework目录并将X11头文件复制到其中:

$ cd /Library/Frameworks/SDL.framework/Versions/Current/Headers
$ cp -R /opt/X11/include/X11 ./

然后$ pip install pygame运行没有错误。

答案 1 :(得分:0)

据我所知,

setup.py build|install命令接受CFLAGSLDFLAGS编译器选项。

因此,你可以这样做

CFLAGS=-I/opt/X11/include python3 setup.py install

您可能也需要LDFLAGS;我不确定确切的位置,但是像

CFLAGS=-I/opt/X11/include LDFLAGS=-L/opt/X11/lib python3 setup.py install

似乎合乎逻辑。

之后,您可能需要将DYLD_LIBRARY_PATH设置为指向X11个库。如果您的安装继续,但您的PyGame脚本将无法运行并抱怨未找到X11库。因此

export DYLD_LIBRARY_PATH=/opt/X11/lib

至于你试图创建的符号链接:这是错误的方式:两个路径应该已经切换,所以我猜你得到一个错误,因为/opt/X11/include/X11已经存在。但是如上所述,不需要符号链接。