【问题标题】:Compile Pygame 1.9.1 from source on Mac OSX 10.9 for Python 3.3在 Mac OSX 10.9 上为 Python 3.3 从源代码编译 Pygame 1.9.1
【发布时间】:2014-03-31 21:26:22
【问题描述】:

首先我想说的是,在这里提出问题并不是我轻而易举的事情。我现在已经尝试从源代码安装 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

在我尝试过的所有事情中,我最了解这一点,我很可能做错了符号链接命令。

我尝试过的另外两个命令是

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

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

【问题讨论】:

  • 我会采取行动..(ymmv 这是一个猜测) export INCLUDE=$INCLUDE:/opt/X11/include/X11
  • 感谢您的尝试,但执行此命令后运气不佳。 (同样的错误)

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


【解决方案1】:

据我所知,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 已经存在。但是有了以上内容,就不需要符号链接了。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-20
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      相关资源
      最近更新 更多