我在Snow Leopard安装过程中安装了开发人员工具,对Snow Leopard进行了全新安装(使用擦除驱动器启动)。
然后我安装了Python 2.6.2,取代了Snow Leopard的默认python 2.6.1。我试图通过以下方式安装PIL:
easy_install
pip
python setup.py build
。所有产生相同的错误(链接到pip
log:http://drop.io/gi2bgw6)。我已经看到其他人使用Snow Leopard默认的python 2.6.1成功安装了PIL,所以我不确定为什么我在使用2.6.2时遇到这么多麻烦。
答案 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)。
安装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
注意:我无法使用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 6802的Mercurial Python Repository中的Ronald Oussoren,这似乎与Snow Leopard将-arch标志的默认值从i386
更改为x86-64
有关。 Python 2.6.2提供了一个补丁,但它尚未集成到Mac安装程序磁盘映像中。
不涉及MacPorts或Fink的最佳解决方案可能是从Subversion Python Repository或Message 92315的2.6版本分支编译和安装Python。根据{{3}}的Issue 6802,Ronald Oussoren在Revision r74686中解决了此问题。
我一直在使用从Mac Disk Image安装的Python 2.6.2看到类似的错误,同时尝试在virtualenv中安装Fabric,所以我打算从2.6版本维护分支编译和安装。如果你愿意,我会在成功时更新。
答案 3 :(得分:3)
答案 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)
答案 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前叉。