Python Pip安装不正确

Python Pip安装不正确,python,pip,Python,Pip,我在Mac上操作,使用Enthound python安装了PIP,但安装软件包时遇到困难 当我尝试安装Pygame时,软件包正在下载并开始构建,但随后出现错误。我意识到Pygame是一个相对复杂的软件包,但对于更简单的软件包,我也有类似的问题。因为我认为这可能与我的Python安装有关,所以我在最后展示了我的env变量。任何帮助都将不胜感激 跟踪结果如下所示: running build_ext building 'pygame._numericsurfarray' extension cr

我在Mac上操作,使用Enthound python安装了PIP,但安装软件包时遇到困难

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

跟踪结果如下所示:

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

我的环境变量是:

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 我已经筛选了所有的建议和反馈,非常感谢。在Enthough上安装二进制文件的所有努力都没有奏效。我不想在Macports上增加更多的复杂性,所以我决定用我热衷的python,简单地使用官方的python 2.7。我是一个狂热的粉丝,当我开始摆弄Python时,这是一个很好的方式来提供一个稳定的工作基础。然而,正如有人指出的那样,它有一些局限性


使用Python 2.7作为默认版本,我重新安装了pip,添加了基本功能,然后能够安装pygame、numpy、matplotlib和wxPython所需的二进制文件。因此,现在我再次使用官方的Python2.7!!谢谢大家。

您缺少一个依赖项,SDL

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


或者更好的是,下载;它在安装程序中包含SDL库。

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

正如Martijn Pieters所建议的,Pygame为Mac提供了一个二进制安装程序。我不知道它是否能与热情的Python一起工作,但我会先尝试一下

如果失败,SDL也有一个适用于Mac的接口。再说一次,我不知道它是否适合你,但我下一步会试试

如果失败了,我会用。自制软件(与MacPorts和Fink不同)设计用于您想要使用的任何Python安装,以及Python的
pip
。(有关详细信息,请参见和)。因此,键入
brew search sdl
以获取所有附加软件包的列表,然后键入
brew install sdl sdl\u foo sdl\u bar等
以安装它们

另外一个问题是,由于“/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site packages/”中的权限错误,您无法
pip安装任何东西,这很简单:您没有写入该目录的权限。有两种方法可以解决此问题:

  • 使用
    sudo-pip-install-foo
    而不是
    pip-install-foo
  • 使用
    sudo chmod-R a+w/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site packages/
    为自己提供写访问权限,因此您可以
    pip安装foo
    。(您可能需要添加一些其他目录。)

  • 第二个非常符合自制的精神(参见上面的两个链接,其中详细介绍了如何以及为什么要这样做),它在python.org软件包中非常有效,因为很多人经常以这种方式使用它,但我不能保证它在Enthow软件包中是一个好主意,虽然我可以保证第一个。

    我不会使用MacPorts来安装SDL,除非您也想使用MacPorts Python。如果您使用的是EnThound、Apple或python.org python,通常最好是找到二进制文件、使用自制软件或手动构建。@abarnert:在这种情况下,最好使用Pygame安装程序。不知道OP在使用什么,也不知道他们为什么要使用
    pip
    。是的,只要它能与Enthough Python一起使用。由于没有检查,我不知道它是否会工作。@Martijn公平地说,有一个包管理器来安装所有东西比在互联网上查找二进制文件要好得多。如果有一个pip包,我通常也会先尝试一下。@Voo:但是SDL不会有pip包,因为它不是Python库。与MacPorts不同,Homebrew的设计可以很好地与您想要的任何Python安装配合使用,它的
    pip
    ,但它并不完美。顺便说一句:我已经有一段时间没有使用Enthink了,但是
    /Library/Frameworks/Python.framework/Versions/7.3/
    看起来是错误的。这应该是
    2.7
    2.7.3
    ,而不是
    7.3
    ,除非这是他们故意做的一些奇怪的事情,以避免与Python.org 2.7.3或其他东西发生冲突。第一件事,第一件事。非常感谢。sudo-pip-install-yolk工作得很好。至于pygame,我在我的桌面mac上安装了pip,然后pip完美地安装了pygame。都是32位的,所以有些东西很奇怪。我使用“热情思考”仅仅是因为我是一个书呆子,直接编译会把我吓坏。听起来我必须克服它,投入进去。我会读关于自制的书。同时,我会按照你在pygame上的建议尝试。非常感谢@NewatPython:在你的桌面Mac上,你一定已经有了SDL。pygame安装程序应该比找不到SDL时更早退出,但它不应该工作,因为它不可能。(如果你还记得你在桌面上做了什么,这里大概也会有同样的事情,但我猜你不会。)@NewatPython:同时,使用enthow也没什么错。numpy/scipy可能会让你自己安装很痛苦,即使是使用自制软件,尤其是如果你想要完整的Fortran软件。但它并不包括世界上的一切;您偶尔还需要学习查找和安装其他功能的必备组件,如
    pygame
    SDL
    lxml
    libxml2
    等,无论是通过二进制文件、自制软件还是手动编译。
    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