开发者

Mac osx lion, virtualenv, pil install - gcc error

I have just completed the xcode install, mac osx lion. Upon completion I attempted to install PIL in a virtual enviroment using pip, easy_install and home brew. All three are erring out. pip install give the following error:

pip `

unable to execute gcc-4.0: No such file or directory

error: command 'gcc-4.0' failed with exit status 1

`

easy_install unable to execute gcc-4.0: No such file or directory error: Setup script exited with error: command 'gcc-4.0' failed with exit status 1

home brew Error: Failed executing: python setup.py build_ext

I am not really sure where to go fr开发者_运维问答om here.

Thanks, CG


Xcode 4.1 on OS X Lion 10.7 no longer includes gcc-4.0 as it did in earlier versions of OS X. When you install a Python package like PIL that includes a C extension module, Python's Distutils will attempt to use the same version of the C compiler that that Python itself was build with. It sounds like the version of Python that was used to create your virtualenv is an older 32-bit-only Python built with gcc-4.0. You can tell for sure by starting the python in your virtualenv. If it says gcc-4.0, you will need to re-create the virtualenv, using a newer base Python, either one of the Apple-supplied Pythons in Lion or installing a newer python using a python.org installer or a brew recipe. Then install Distribute and pip and virtualenv for that Python, create a new virutalenv and then install PIL in it.


After spending hours on the same problem this is what it worked for me:

Download the PIL source code and cd into it. Check which version of gcc do you have by:

gcc
i686-apple-darwin10-gcc-4.2.1: no input files

Then I force to apply this version by:

export CC=gcc-4.2

And select the correct architecture (in my case 32bit):

export ARCHFLAGS="-arch i386"

For 64 use export ARCHFLAGS="-arch x86_64"

Then build and install:

python setup.py build
python setup.py install


Can you find the gcc-4.0 binary on your system? You might need to add the directory it's in to your PATH environment variable.


If it helps any, I solved this pesky issue with sym links, and I think it will work for you. I wrote this with my version of gcc in mind, which is 4.2:

cd /usr/bin
rm cc gcc c++ g++
ln -s gcc-4.2 cc
ln -s gcc-4.2 gcc
ln -s c++-4.2 c++
ln -s g++-4.2 g++
ln -s gcc-4.2 gcc-4.0

There ya go!


An Idea would be to point gcc-4.0 to the default gcc flag:

sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.0
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜