我全新安装了 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 一起工作时遇到这么多麻烦。

有帮助吗?

解决方案

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

export CC=/usr/bin/gcc-4.0

查看类似问题 这里.

这就解决了 stdarg 问题。然后,您可能会遇到以后构建各种依赖库的问题。

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

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

其他提示

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

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

export ARCHFLAGS="-arch i386"

(假设你使用的是 i386)

修改答案

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

  1. 安装readline

    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 2.6.2 Mac 安装程序磁盘映像 来自 Python.org,于 2009 年 4 月 16 日发布。你能否证实这一点?

从 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

这似乎是与 Snow Leopard 将 -arch 标志的默认值从 i386x86-64 根据罗纳德·奥索伦 (Ronald Oussoren) 的说法 留言92083Python 问题 6802. 。Python 2.6.2 有一个可用补丁,但尚未集成到 Mac 安装程序磁盘映像中。

不涉及 MacPorts 或 Fink 的最佳解决方案可能是从 2.6 版本分支编译并安装 Python Mercurial Python 存储库 或者 Subversion Python 存储库. 。根据 留言92315问题 6802, ,罗纳德·奥索伦(Ronald Oussoren)修复了这个问题 修订版 r74686.

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

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

步骤1:安装MacPorts
第2步:sudo 端口安装 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

两全其美?

以下步骤对我有用:

$ brew install pip
$ export ARCHFLAGS="-arch i386 -arch x86_64"
$ pip install pil

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

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

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

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

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

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

然后照常安装PIL即可。

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

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

你有 代码 (雪豹光盘附带)安装了吗?有一些关键组件(最值得注意的是 海湾合作委员会)需要安装 XCode 为您处理的内容。

分2步解决:

步骤1: 卸载并安装 Xcode,建议如下:http://binarylionstudios.com/blog/2011/01/30/error-stdarg.h-no-such-file-or-directory/

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

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

重新启动 Mac 后使用安装 Xcode.app

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

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

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

祝你好运!

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

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

我不能说我理解为什么这有效。

顺便说一下,这也适用于 PIL 的 Pillow fork。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top