在Snow Leopard上安装更新的Python 2.6.2的Python Imaging Library (PIL)
我刚刚在一台全新格式化的电脑上安装了Snow Leopard系统,并在安装过程中安装了开发工具。
接着,我安装了Python 2.6.2,替换掉了Snow Leopard自带的Python 2.6.1。我尝试通过以下几种方式来安装PIL:
easy_install
pip
- 下载源代码,然后手动运行
python setup.py build
。
但无论哪种方式都出现了相同的错误(pip
的日志链接:http://drop.io/gi2bgw6)。我看到其他人用Snow Leopard自带的Python 2.6.1成功安装了PIL,所以我不明白为什么我在用2.6.2时会遇到这么多问题。
12 个回答
修改后的回答
以下是我在Mac OS X 10.6上成功安装PIL的步骤(没有使用MacPorts或Fink)。
安装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
安装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
从Mercurial仓库编译最新的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
更新.bash_profile,以便使用新的Python 2.6.2及虚拟环境管理工具virtualenvwrapper
# 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
为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
创建一个虚拟环境,然后用pip安装PIL
mkvirtualenv pil-test cdvirtualenv easy_install pip pip install http://effbot.org/downloads/Imaging-1.1.6.tar.gz
注意: 我无法通过pip install pil
来安装PIL,所以我按照上面的URL进行了安装。
原始回答
从你提供的pip-log.txt文件来看,你似乎是通过Python.org上发布的2009年4月16日的Mac安装镜像安装了Python 2.6.2。你能确认这一点吗?
从pip日志来看,gcc出现了退出状态1的错误。你pip日志中的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
根据Ronald Oussoren在Python问题6802的消息92083中提到的,这似乎是由于Snow Leopard将-arch标志的默认值从i386
改为x86-64
引起的问题。虽然Python 2.6.2有一个补丁,但它并没有被集成到Mac安装镜像中。
如果不使用MacPorts或Fink,最好的解决方案可能是从Mercurial Python仓库或Subversion Python仓库编译并安装Python 2.6的发布版本。根据问题6802的消息92315,Ronald Oussoren在修订版r74686中修复了这个问题。
我在尝试在虚拟环境中安装Fabric时,使用从Mac镜像安装的Python 2.6.2也遇到了类似的错误,所以我计划从2.6的维护分支编译和安装。如果成功的话,我会更新进展。
我遇到的问题是PIL这个库是在PowerPC架构下编译的(-arch ppc)。
在你进行设置、构建或编译之前,先做这个:
export ARCHFLAGS="-arch i386"
(假设你是在i386架构上)
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-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 以及各种第三方库。