Ошибка компиляции cover.py на MacOSX - PullRequest
2 голосов
/ 26 апреля 2011

Я пытался установить покрытие 3.4 на мой MacBook, работающий на текущей Mac OS X 10.6.7.Это то, что я получил как ошибку:

$ easy_install coverage
install_dir /Users/jammon/workspace/myproject/lib/python2.7/site-packages/
Searching for coverage
Reading http://pypi.python.org/simple/coverage/
Reading http://nedbatchelder.com/code/modules/coverage.html
Reading http://nedbatchelder.com/code/coverage
Reading http://nedbatchelder.com/code/coverage/3.4b1
Reading http://nedbatchelder.com/code/coverage/3.4b2
Best match: coverage 3.4
Downloading http://pypi.python.org/packages/source/c/coverage/coverage-3.4.tar.gz#md5=46782809578c8fd29912c124d2420842
Processing coverage-3.4.tar.gz
Running coverage-3.4/setup.py -q bdist_egg --dist-dir /var/folders/10/10P5vwX-Ghmkg8s25PMr3E+++TI/-Tmp-/easy_install-UcskZB/coverage-3.4/egg-dist-tmp-QCs3YS
no previously-included directories found matching 'test'
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 coverage/tracer.c:3:
/Developer/SDKs/MacOSX10.4u.sdk/usr/include/stdarg.h:4:25: error: stdarg.h: No such file or directory
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 coverage/tracer.c:3:
/Developer/SDKs/MacOSX10.4u.sdk/usr/include/stdarg.h:4:25: error: stdarg.h: No such file or directory
lipo: can't figure out the architecture type of: /var/folders/10/10P5vwX-Ghmkg8s25PMr3E+++TI/-Tmp-//ccAYGjpc.out
error: Setup script exited with error: command 'gcc-4.0' failed with exit status 1

Кто-нибудь может понять из этого?Я просто не понимаю, что не так.Или как я могу это исправить.
Любая помощь с благодарностью.

Обновление:
После комментария Неда я попробовал это с easy_install -vv coverage;результат не сильно отличается:

...
creating build/temp.macosx-10.3-fat-2.7/coverage
gcc-4.0 -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -g -O2 -DNDEBUG -g -O3 -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c coverage/tracer.c -o build/temp.macosx-10.3-fat-2.7/coverage/tracer.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 coverage/tracer.c:3:
/Developer/SDKs/MacOSX10.4u.sdk/usr/include/stdarg.h:4:25: error: stdarg.h: No such file or directory
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 coverage/tracer.c:3:
/Developer/SDKs/MacOSX10.4u.sdk/usr/include/stdarg.h:4:25: error: stdarg.h: No such file or directory
lipo: can't figure out the architecture type of: /var/folders/10/10P5vwX-Ghmkg8s25PMr3E+++TI/-Tmp-//ccZQsHOd.out
error: Setup script exited with error: command 'gcc-4.0' failed with exit status 1

Насколько я помню, я скомпилировал Python из исходных кодов стандартным способом, это не был бинарный дистрибутив.Я пробовал с и без virtualenv.

Ответы [ 3 ]

6 голосов
/ 27 апреля 2011

Самая последняя версия XCode устраняет поддержку компиляции в старой архитектуре PowerPC (PPC).К сожалению, Python на Mac обычно все еще пытается создать расширения C для PPC, а также для x86.Чтобы обойти это, используйте префиксные команды, такие как «setup.py install» или «easy_install» с настройкой ARCHFLAGS, которая включает в себя только те архитектуры, для которых вы хотите построить:

ARCHFLAGS="-arch i386 -arch x86_64" easy_install coverage
0 голосов
/ 05 июня 2011

После долгих поисков я нашел решение в этом посте блога и комментариях , которое сработало для меня: я удалил /Developer/SDKs/MacOSX10.4u.sdk, затем установил покрытие (и reportlab,который показал ту же проблему) работал так, как ожидалось.

Насколько я понял, обработка stdarg.h изменилась в некоторых версиях gcc, что привело к описанной проблеме.

0 голосов
/ 02 мая 2011

Кроме того, вы можете использовать ActivePython , чтобы устранить необходимость компилировать вещи самостоятельно :

$ pypm install coverage
The following packages will be installed into "~/Library/Python/2.7" (2.7):
 coverage-3.4
Get: [pypm-free.activestate.com] coverage 3.4
Installing coverage-3.4                                  
Fixing script ~/Library/Python/2.7/bin/coverage
$
...