使用更新的 Python 2.6.2 在 Snow Leopard 上安装 Python 成像库 (PIL)
-
08-07-2019 - |
题
我全新安装了 Snow Leopard(从擦除的驱动器开始),并在 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 一起工作时遇到这么多麻烦。
解决方案
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)。
安装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 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
更新新 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
为 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
创建一个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 标志的默认值从 i386
到 x86-64
根据罗纳德·奥索伦 (Ronald Oussoren) 的说法 留言92083 的 Python 问题 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/
分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。