2

我在 Mac 上运行并使用 Enthought python 我已经安装了 PIP,但在安装软件包时遇到了困难。

当我尝试安装 Pygame 时,软件包正在下载并开始构建,但随后出现错误。我意识到 Pygame 是一个相对复杂的包,但我对更简单的包也有类似的问题。因为我认为这可能与我安装的 Python 有关,所以我在最后显示了我的环境变量。任何帮助,将不胜感激

跟踪看起来像:

running build_ext

building 'pygame._numericsurfarray' extension

creating build/temp.macosx-10.5-i386-2.7

creating build/temp.macosx-10.5-i386-2.7/src

gcc -fno-strict-aliasing -fno-common -dynamic -arch i386 -DNDEBUG -g -O3 -arch i386 -I/NEED_INC_PATH_FIX -I/Library/Frameworks/Python.framework/Versions/7.3/include/python2.7 -c src/_numericsurfarray.c -o build/temp.macosx-10.5-i386-2.7/src/_numericsurfarray.o

In file included from src/_numericsurfarray.c:23:

src/pygame.h:106:17: error: SDL.h: No such file or directory

In file included from src/_numericsurfarray.c:23:

src/pygame.h:350: error: expected specifier-qualifier-list before ‘SDL_VideoInfo’

src/pygame.h:388: error: expected specifier-qualifier-list before ‘SDL_Surface’

src/_numericsurfarray.c:26:27: error: SDL_byteorder.h: No such file or directory
....
....
...
....
src/_numericsurfarray.c:1097: error: expected declaration specifiers or ‘...’ before ‘SDL_Surface’

error: command 'gcc' failed with exit status 1

Command /Library/Frameworks/Python.framework/Versions/7.3/Resources/Python.app/Contents/MacOS/Python -c "import setuptools;__file__='/var/folders/9m/qcp8h8ss4ng1v8429jvnkkrc0000gn/T/pip-build/pygame/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/9m/qcp8h8ss4ng1v8429jvnkkrc0000gn/T/pip-roxs9O-record/install-record.txt --single-version-externally-managed failed with error code 1 in /var/folders/9m/qcp8h8ss4ng1v8429jvnkkrc0000gn/T/pip-build/pygame
Storing complete log in /Users/jc_macpro/.pip/pip.log

我的环境变量是:

TERM_PROGRAM=Apple_Terminal
TERM=xterm-256color
SHELL=/bin/bash
TMPDIR=/var/folders/9m/qcp8h8ss4ng1v8429jvnkkrc0000gn/T/
Apple_PubSub_Socket_Render=/tmp/launch-iwuiuZ/Render
TERM_PROGRAM_VERSION=309
TERM_SESSION_ID=FDC661E1-1196-448F-8D69-28AD9D7C496B
USER=jc_macpro
COMMAND_MODE=unix2003
SSH_AUTH_SOCK=/tmp/launch-pH83z9/Listeners
__CF_USER_TEXT_ENCODING=0x1F5:0:0
Apple_Ubiquity_Message=/tmp/launch-s4tuBY/Apple_Ubiquity_Message
PATH=/Library/Frameworks/Python.framework/Versions/Current/bin:/Library/Frameworks/Python.framework/Versions/Current/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
PWD=/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages
LANG=en_US.UTF-8
SHLVL=1
HOME=/Users/jc_macpro
LOGNAME=jc_macpro
SECURITYSESSIONID=186a4
_=/usr/bin/env
OLDPWD=/Library/Frameworks/Python.framework/Versions/Current/bin

我将不胜感激任何帮助。

更新:12/22/12 我已经筛选了所有的建议和反馈,非常感谢。在 Enthought 上安装二进制文件的所有努力都没有奏效。我不想在 Macports 上增加更多的复杂性,所以我决定淘汰我的 Enthought python 并简单地使用官方的 Python 2.7。我是 Enthought 的忠实粉丝,当我开始使用 Python 时,它是提供稳定工作基础的好方法。然而,正如所指出的,它有一些局限性。

使用 Python 2.7 作为我的默认设置,我重新安装了 pip,添加了基本功能,然后能够安装 pygame、numpy、matplotlib 和 wxPython 所需的二进制文件。所以现在我开始工作了,但又一次危险了——就在官方的 Python 2.7 上!!谢谢你们。

4

2 回答 2

4

您缺少依赖项 SDL。

如果您安装了 macports,请使用它来安装libsdl.

或者更好的是,下载Mac 的 Pygame 二进制文件;它在安装程序中包含 SDL 库。

于 2012-12-21T22:38:47.257 回答
3

问题是您需要 SDL 来安装 PyGame。您可能还想安装各种 SDL 附加包(用于字体的 SDL_ttf 等)。

正如 Martijn Pieters 所建议的,Pygame 带有一个适用于 Mac 的二进制安装程序。我不知道它是否适用于 Enthought Python,但我会先尝试一下。

如果失败,SDL 也有一个适用于 Mac的二进制安装程序。再说一次,我不知道它是否对你有用,但我会尝试下一次。

如果失败,我会使用Homebrew。Homebrew(与 MacPorts 和 Fink 不同)旨在与您想要使用的任何 Python 安装以及该 Python 的pip. (有关详细信息,请参阅此处此处。)因此,键入brew search sdl以获取所有附加软件包的列表,然后brew install sdl sdl_foo sdl_bar etc.安装它们。

对于您的其他问题,由于“/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages/”中的权限错误,您无能为力,这很简单:您不这样pip install t 有权写入该目录。有两种方法可以修复它:

  1. 使用sudo pip install foo而不是pip install foo.
  2. 用来sudo chmod -R a+w /Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages/给自己写权限,这样你就可以pip install foo. (您可能需要添加一些其他目录。)

第二个非常符合 Homebrew 的精神(请参阅上面的两个链接,其中详细介绍了如何以及为什么要这样做),它与 python.org 软件包配合得很好,因为许多人经常以这种方式使用它,但我不能保证 Enthought 包是个好主意,但我可以保证第一个。

于 2012-12-21T22:49:16.273 回答