在MacOSX10.9上为Python3.3从源代码编译PyGame1.9.1

在MacOSX10.9上为Python3.3从源代码编译PyGame1.9.1,python,macos,python-3.x,pygame,osx-mavericks,Python,Macos,Python 3.x,Pygame,Osx Mavericks,首先,我想说的是,在这里问一个问题并不是我轻易就能做到的。我现在已经尝试从源代码安装PyGame1.9.1四个小时了,我遇到了几个问题,但都能解决。这是我第一次完全被难住了 将pygame-1.9.1release.tar.gz和cd解包到文件夹后,运行“python3 setup.py安装” /Library/Frameworks/SDL.framework/Versions/Current/Headers/SDL_syswm.h:58:10: fatal error: 'X11/Xlib.h

首先,我想说的是,在这里问一个问题并不是我轻易就能做到的。我现在已经尝试从源代码安装PyGame1.9.1四个小时了,我遇到了几个问题,但都能解决。这是我第一次完全被难住了

将pygame-1.9.1release.tar.gz和cd解包到文件夹后,运行“python3 setup.py安装”

/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
以及

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
我不知道我还能做什么,但我真的很感激你能帮我。提前谢谢

据我所知,setup.py build | install命令接受CFLAGS和LDFLAGS编译器选项

因此,在这里,你可以这样做

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_路径设置为指向X11库。以防您的安装继续进行,但PyGame脚本无法运行并抱怨找不到X11库。因此

export DYLD_LIBRARY_PATH=/opt/X11/lib

至于您试图创建的符号链接:这是错误的“循环”:两条路径应该已切换,因此我猜您出现了错误,因为/opt/X11/include/X11已经存在。但是有了上述功能,就不需要符号链接了。

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

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

然后$pip安装pygame运行时没有出现错误。

我试试看。。ymmv这是一个猜测导出INCLUDE=$INCLUDE:/opt/X11/INCLUDE/X11感谢您的尝试,但执行此命令后没有运气。同样的错误
$ cd /Library/Frameworks/SDL.framework/Versions/Current/Headers
$ cp -R /opt/X11/include/X11 ./