Ошибка GCC-4.2 на Mac OS-X Mountain Lion, неспособная установить некоторые пакеты с помощью pip/virtualenv

Я вижу очень раздражающую ошибку, о которой я действительно не знаю, как бороться. Это кажется довольно распространенным я, и я пробовал почти все решения, которые я мог бы найти безрезультатно.

Я пытаюсь установить библиотеки, используя pip. Эта проблема была встречена с gevent, с psycopg2 и с greenlet. Проблема заключается в том, что мой компьютер не может найти конкретного компилятора C, который должен придумать XCode 4: gcc-4.2. Вот пример (хотя попытки были сделаны и в virtualenv).

Last login: Sun Jul 29 23:35:54 on ttys000
*******s-MacBook-Pro:~ ******$ pip install gevent
Downloading/unpacking gevent
  Downloading gevent-0.13.7.tar.gz (288Kb): 288Kb downloaded
  Running setup.py egg_info for package gevent

Downloading/unpacking greenlet (from gevent)
  Downloading greenlet-0.4.0.zip (72Kb): 72Kb downloaded
  Running setup.py egg_info for package greenlet

Installing collected packages: gevent, greenlet
  Running setup.py install for gevent
    building 'gevent.core' extension
    gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch i386 -arch x86_64 -g -O2 -DNDEBUG -g -O3 -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c gevent/core.c -o build/temp.macosx-10.6-intel-2.7/gevent/core.o
In file included from /Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/unicodeobject.h:4,
                 from /Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/Python.h:85,
                 from gevent/core.c:4:
/Developer/SDKs/MacOSX10.6.sdk/usr/include/stdarg.h:4:25: error: stdarg.h: No such file or directory
In file included from gevent/core.c:225:
gevent/libevent.h:9:19: error: event.h: No such file or directory
gevent/libevent.h:38:20: error: evhttp.h: No such file or directory
gevent/libevent.h:39:19: error: evdns.h: No such file or directory
gevent/core.c:361: error: field ‘ev’ has incomplete type
gevent/core.c:741: warning: parameter names (without types) in function declaration

....more like this but i'll skip it for now....

copying gevent/wsgi.py -> build/lib.macosx-10.6-intel-2.7/gevent

running build_ext

building 'gevent.core' extension

creating build/temp.macosx-10.6-intel-2.7

creating build/temp.macosx-10.6-intel-2.7/gevent

gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch i386 -arch x86_64 -g -O2 -DNDEBUG -g -O3 -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c    gevent/core.c -o build/temp.macosx-10.6-intel-2.7/gevent/core.o

In file included from /Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/unicodeobject.h:4,

             from /Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/Python.h:85,

             from gevent/core.c:4:

/Developer/SDKs/MacOSX10.6.sdk/usr/include/stdarg.h:4:25: error: stdarg.h: No such file or directory

In file included from gevent/core.c:225:

gevent/libevent.h:9:19: error: event.h: No such file or directory

gevent/libevent.h:38:20: error: evhttp.h: No such file or directory

gevent/libevent.h:39:19: error: evdns.h: No such file or directory

....more like this as well....

gevent/core.c:15559: warning: assignment makes pointer from integer without a cast

gevent/core.c: At top level:

gevent/core.c:21272: error: expected ‘)’ before ‘val’

lipo: can't figure out the architecture type of:    /var/folders/xc/f2mg5kn96kqdr3tj19pgyhs00000gn/T//cckLxkJ2.out

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

Command /Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -c        "import setuptools;__file__='/Users/******/build/gevent/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record   /var/folders/xc/f2mg5kn96kqdr3tj19pgyhs00000gn/T/pip-yA5oWR-record/install-record.txt failed with error code 1 in /Users/******/build/gevent
Storing complete log in /Users/******/.pip/pip.log
***********s-MacBook-Pro:~ ******$ 

Что вы можете задать:

1) Вы пытались использовать virtualenv?

Да. И я попытался символизировать ранее существовавший gcc (который присутствует в каталоге /usr/bin/ ) так:

ln -s /usr/bin/gcc gcc-4.2
ln -s /usr/bin/gcc-4.2 gcc-4.2
ln -s /usr/bin/gcc gcc

Ни один из них не работал.

2) Вы пытались переустановить XCode?

Да.

3) Установили ли вы инструменты командной строки XCode?

Да.

4) У вас есть gcc?

**********s-MacBook-Pro:~ sanjay$ gcc
i686-apple-darwin11-llvm-gcc-4.2: no input files

5) Установка Python?

************s-MacBook-Pro:~ ******$ python
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr  9 2012, 20:52:43) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

Любые идеи о том, что может быть неправильным и как его исправить?

Я также попытался установить это: https://github.com/kennethreitz/osx-gcc-installer. Я понятия не имею, что еще попробовать. Я немного нового парня на блоке, когда дело доходит до этого кодирования/установки unix-y, поэтому, если есть что-то, что я делаю очень плохо, укажите это.

Спасибо!

Ответ 1

Те же проблемы с установкой pycrypto, которые невозможно скомпилировать в virtualenv. Найденное решение в этой теме плакат jiaaro: https://gist.github.com/3179227#gistcomment-379913

Вам нужно установить Xcode 4.4 (из магазина приложений), а затем, в пределах xcode открыть Xcode > Настройки (или нажмите Cmd +,) затем откройте вкладку "Загрузка" и установите средства командной строки.

В Mac OSx Mountain Lion 10.8 У меня был установлен xCode 4.3 с инструментами командной строки. Я сделал обновление до xCode 4.4, и он все еще не работает. Xcode автоматически не загружает новые инструменты командной строки, даже если вы их установили. Как говорится в сообщении от jiaaro, вы должны снова загрузить инструменты командной строки.

Текущая версия gcc находится ниже и успешно удаляет пакеты install installup в virtualenv для меня, без необходимости ссылки sym.

НКУ

i686-яблоко-darwin11-LLVM-GCC-4.2

Ответ 3

Не уверен, что это может помочь, но, возможно, стоит попробовать:

https://gist.github.com/3179227

Ответ 4

Итак, я решил эту проблему от себя, но я как бы живу на диком западе, где сейчас исправляю ситуацию и беспокоюсь о правильном способе делать это, когда все ломается. Я просто сделал символическую ссылку, так что stdargs.h находится в разумном месте, где это будет видно по запросу.

sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/stdarg.h /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/include/stdarg.h

Возможно, вам придется изменить "MacOSX10.8.sdk" на тот, который вы сейчас используете. Hopeful

Ответ 5

Настройка этой переменной окружения сделала это для меня, без необходимости возиться с Xcode или загружать файлы.

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future