26

我在安装 Snow Leopard 期间安装了开发人员工具,全新安装了 Snow Leopard(从擦除的驱动器开始)。

然后我安装了 Python 2.6.2,替换了 Snow Leopard 默认的 python 2.6.1。我尝试通过以下方式安装 PIL:

  1. easy_install
  2. pip
  3. 下载源代码并python setup.py build手动运行。

所有都会产生相同的错误(pip日志链接: http: //drop.io/gi2bgw6)。我已经看到其他人使用 Snow Leopard 默认 python 2.6.1 成功安装了 PIL,所以我不确定为什么我在使用 2.6.2 时遇到这么多麻烦。

4

12 回答 12

18

我遇到的问题是 PIL 是针对 PowerPC 架构(-arch ppc)编译的。

在设置/构建/编译之前执行此操作:

export ARCHFLAGS="-arch i386"

(假设你在 i386 上)

于 2010-02-08T14:42:02.193 回答
12

python.org Python 是使用较早的 gcc 构建的。尝试使用 gcc-4.0 而不是 SL 默认的 4.2:

export CC=/usr/bin/gcc-4.0

在这里看到类似的问题。

这超越了标准参数问题。然后,您可能会在以后遇到各种依赖库的构建问题。

顺便说一句,gcc-4.0 和 gcc-4.2 都包含在 Snow Leopard 的 Xcode 3中,因此无需额外安装。

2011-05 更新:请注意,较新的 Xcode 4发布,用于 10.6 的实验性使用,预计将成为 10.7 的标准,不再包括 PPC 支持,因此,如果您安装 Xcode 4,此建议将不起作用。选项包括使用来自 python.org 的较新的 64 位/32 位 Python 2.7.x 安装程序,或使用 MacPorts、Homebrew 或 Fink 安装较新的 Python 2.6 和 PIL 以及各种第 3 方库。

于 2009-09-17T16:02:09.520 回答
7

修改后的答案

以下是我在 Mac OS X 10.6(不使用 MacPorts 或 Fink)上成功安装 PIL 所采取的步骤。

  1. 安装阅读线

    cd ~/src
    curl -O ftp://ftp.cwru.edu/pub/bash/readline-6.0.tar.gz
    tar -xvzf readline-6.0.tar.gz
    cd readline-6.0
    ./configure  
    make  
    sudo make install
    
  2. 安装 gbdm

    cd ~/src
    curl -O ftp://mirror.anl.gov/pub/gnu/gdbm/gdbm-1.8.3.tar.gz
    tar -xvzf gbdm-1.8.3.tar.gz
    cd gdbm-1.8.3
    # Need to modify Makefile.in
    perl -pi -e 's/BINOWN = bin/BINOWN = root/' Makefile.in
    perl -pi -e 's/BINGRP = bin/BINGRP = wheel/' Makefile.in
    ./configure
    make
    sudo make install
    
  3. 从 Mercurial Repo 编译最新的 Python 2.6.2+

    cd ~/development
    hg clone http://code.python.org/hg/branches/release2.6-maint/ python-release2.6-maint.hg
    cd python-release2.6-main.hg
    ./configure --enable-framework MACOSX_DEPLOYMENT_TARGET=10.6
    make
    sudo make frameworkinstall
    

    注意:我运行后确实收到以下错误make。但是,我继续进行,因为我不担心缺少这些模块,并且能够成功安装 PIL。

    Failed to find the necessary bits to build these modules:
    _bsddb             dl                 imageop         
    linuxaudiodev      ossaudiodev        spwd            
    sunaudiodev                                           
    To find the necessary bits, look in setup.py in detect_modules() for the module's name.
    
    
    Failed to build these modules:
    Nav                                                   
    
    running build_scripts
    
  4. 为新的 Python 2.6.2+ 和 virtualenvwrapper 更新 .bash_profile

    # Set PATH for MacPython 2.6 if Python2.6 is installed
    if [ -x /Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6 ]; then
        PATH="/Library/Frameworks/Python.framework/Versions/2.6/bin:${PATH}"
        export PATH
    fi
    
    # MDR April 23, 2009: Added for virtualenvwrapper
    if [ -x   /Library/Frameworks/Python.framework/Versions/2.6/bin/virtualenvwrapper_bashrc ]; then
        export WORKON_HOME=$HOME/.virtualenvs
        export PIP_VIRTUALENV_BASE=$WORKON_HOME
        source /Library/Frameworks/Python.framework/Versions/2.6/bin/virtualenvwrapper_bashrc
    fi
    
  5. 为 Python 2.6.2+ 安装 easy_install、pip、virtualenv 和 virtualenvwrapper

    curl -O http://peak.telecommunity.com/dist/ez_setup.py
    sudo python ez_setup.py
    sudo easy_install pip
    sudo easy_install virtualenv
    sudo easy_install virtualenvwrapper
    
  6. 创建一个 virtualenv 然后使用 pip 安装 PIL

    mkvirtualenv pil-test
    cdvirtualenv
    easy_install pip
    pip install http://effbot.org/downloads/Imaging-1.1.6.tar.gz
    

注意:我无法使用 安装 PIL pip install pil,所以我从 URL 安装,如上所示。

原始答案

根据我在您的pip-log.txt文件中看到的内容,您似乎使用 Python.org 于 2009 年 4 月 16 日发布的Mac 安装程序磁盘映像安装了 Python 2.6.2 。您能确认一下吗?

从 pip 日志中,gcc 以退出状态 1 失败。gcc您的 pip 日志中的违规命令如下:

gcc -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -O3 -DHAVE_LIBJPEG -DHAVE_LIBZ -I/System/Library/Frameworks/Tcl.framework/Headers -I/System/Library/Frameworks/Tk.framework/Headers -IlibImaging -I/Library/Frameworks/Python.framework/Versions/2.6/include -I/usr/local/include -I/usr/include -I/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c _imaging.c -o build/temp.macosx-10.3-fat-2.6/_imaging.o

根据Python Issue 6802的消息 92083中的Ronald Oussoren,这似乎是与 Snow Leopard 将 -arch 标志的默认值从 更改为 相关的i386问题。有一个可用的 Python 2.6.2 补丁,但尚未集成到 Mac 安装程序磁盘映像中。x86-64

不涉及 MacPorts 或 Fink 的最佳解决方案可能是从Mercurial Python RepositorySubversion Python Repository的 2.6 发布分支编译和安装 Python 。根据Issue 6802的Message 92315,Ronald Oussoren 在修订版 r74686中修复了这个问题。

在尝试在 virtualenv 中安装 Fabric 时,我一直在使用从 Mac 磁盘映像安装的 Python 2.6.2 看到类似的错误,因此我计划从 2.6 版本维护分支进行编译和安装。如果你愿意,我会在成功时更新。

于 2009-09-17T16:19:14.143 回答
3

10.6 Snow Leopard 轻松安装 PIL,无需保留 MacPorts :)

第 1 步:安装 MacPorts
第 2 步:sudo port install py26-pil
第 3 步:mv /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib /python2.6/site-packages/* /Library/Python/2.6/site-packages/
第 4 步:卸载 MacPorts

两全其美?

于 2010-12-16T22:37:04.253 回答
2

以下步骤对我有用:

$ brew install pip
$ export ARCHFLAGS="-arch i386 -arch x86_64"
$ pip install pil
于 2011-08-01T13:10:56.480 回答
1

在我看来,“没有这样的文件”与 stdarg.h 结合是最有趣的错误。好像少了一个头文件。我不知道如何确保它已安装在 OS X 上,所以这只是一半的答案,对此感到抱歉,但也许它会把你推向正确的方向。

于 2009-09-17T11:46:43.273 回答
1

也许您应该尝试从 pythonmac 站点预构建通用二进制文件

http://pythonmac.org/packages/py25-fat/index.html

这些是针对 python2.5 的,包括 python2.5(所以可能对你有用也可能不可用),我一直在使用它,因为我在使用带有 py2app 的自构建 PIL 时遇到问题。

于 2009-09-17T12:26:29.587 回答
1

我找到了一个更简单的方法。sudo 端口安装 python26 sudo 端口安装 python_select

然后使用 python_select 将 python26 设置为默认值。

然后像往常一样安装 PIL。

于 2009-09-21T14:27:13.740 回答
1

我能够使用以下说明使用 SL 的 Python 安装 PIP:

http://jetfar.com/libjpeg-and-python-imaging-pil-on-snow-leopard/

于 2009-09-28T06:56:18.440 回答
0

您是否安装了XCode(来自 Snow Leopard 光盘)?需要安装一些 XCode 为您处理的关键组件(最显着的是GCC )。

于 2009-09-17T11:32:52.317 回答
0

分两步解决:

第 1 步:卸载并安装 Xcode,此处建议:http: //binaryionstudios.com/blog/2011/01/30/error-stdarg.h-no-such-file-or-directory/

要正确删除 Xcode,请遵循以下答案: 如何完全删除 Xcode 4

sudo /Developer/Library/uninstall-devtools --mode=all

重新启动 Mac 后使用 install Xcode.app

第二步:重新安装xcode后,安装失败

无法执行 gcc-4.2:没有这样的文件或目录 PIL

为了解决我关注了这篇文章: http ://aravir-rose.blogspot.com/2011/12/installing-python-27s-imaging-library.html

祝你好运!

于 2012-01-16T13:08:28.240 回答
0

在具有当前 XCode 且没有 gcc-4.0 的 OS X Lion 上,我可以通过设置以下环境变量来解决缺少的 stdard.h 错误:

出口 CC="/usr/bin/llvm-gcc-4.2"

我不能说我明白为什么会这样。

顺便说一句,这也适用于 PIL 的枕头叉。

于 2012-04-05T13:54:00.490 回答