使用更新的Python 2.6.2在Snow Leopard上安装Python映像库(PIL)

时间:2009-09-17 11:29:18

标签: python osx-snow-leopard python-imaging-library

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

12 个答案:

答案 0 :(得分:18)

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

在setup / build / compile之前执行此操作:

export ARCHFLAGS="-arch i386"

(假设你在i386上)

答案 1 :(得分:11)

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

export CC=/usr/bin/gcc-4.0

查看类似问题here

这超越了stdarg问题。然后,您可能会遇到各种依赖库的构建问题。

BTW,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-bin Python 2.7.x安装程序或使用MacPorts,Homebrew或Fink安装较新的Python 2.6和PIL以及各种第三方库。

答案 2 :(得分:7)

修改后的答案

以下是我在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
    
  7. 注意:我无法使用pip install pil安装PIL,因此我从URL安装,如上所示。

    原始答案

    从我在pip-log.txt文件中看到的内容看来,您使用2009年4月16日发布的Python.org中的Mac Installer Disk Image安装了Python 2.6.2。您能确认一下吗?

    从点子日志中,gcc因退出状态1而失败。来自点子日志的违规gcc命令如下:

    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
    

    根据Message 92083 Python Issue 6802Mercurial Python Repository中的Ronald Oussoren,这似乎与Snow Leopard将-arch标志的默认值从i386更改为x86-64有关。 Python 2.6.2提供了一个补丁,但它尚未集成到Mac安装程序磁盘映像中。

    不涉及MacPorts或Fink的最佳解决方案可能是从Subversion Python RepositoryMessage 92315的2.6版本分支编译和安装Python。根据{{​​3}}的Issue 6802,Ronald Oussoren在Revision r74686中解决了此问题。

    我一直在使用从Mac Disk Image安装的Python 2.6.2看到类似的错误,同时尝试在virtualenv中安装Fabric,所以我打算从2.6版本维护分支编译和安装。如果你愿意,我会在成功时更新。

答案 3 :(得分:3)

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

两全其美?

答案 4 :(得分:2)

以下步骤对我有用:

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

答案 5 :(得分:1)

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

答案 6 :(得分:1)

可能你应该尝试从pythonmac网站预先构建通用二进制文件

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

这些是python2.5,包含python2.5(因此可能或可能不适用于你),我一直在使用它,因为我在使用py2app自构建PIL时遇到了问题。

答案 7 :(得分:1)

我发现了一种更简单的方法。 sudo port安装python26 sudo port install python_select

然后使用python_select set python26作为默认值。

然后正常安装PIL。

答案 8 :(得分:1)

我可以使用这些说明在SL的Python中安装PIP:

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

答案 9 :(得分:0)

您是否安装了XCode(Snow Leopard光盘上)?有一些关键组件(最值得注意的是GCC)需要安装,XCode为您处理。

答案 10 :(得分:0)

分两步解决:

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

删除Xcode正确遵循以下答案: How to fully remove 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

祝你好运!

答案 11 :(得分:0)

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

  

export CC =“/ usr / bin / llvm-gcc-4.2”

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

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