Проблема при попытке установить PyCurl на Mac Snow Leopard - PullRequest
6 голосов
/ 07 мая 2010

Мое приложение должно использовать PyCurl, поэтому я попытался установить его на свой Mac, но обнаружил много проблем и ошибок.

Требование: Прежде всего я должен сказать, что версия Python, работающая на моем Mac, основана на 32 битах, потому что мне нужно использовать WxPython, для которого нужен 32-битный Python. Для этого я использовал:

defaults write com.apple.versioner.python Prefer-32-Bit -bool yes

Для установки PyCurl я использовал:

sudo env ARCHFLAGS="-arch x86_64" easy_install setuptools pycurl

И вернул терминал:

Best match: setuptools 0.6c11
Processing setuptools-0.6c11-py2.6.egg
setuptools 0.6c11 is already the active version in easy-install.pth
Installing easy_install script to /usr/local/bin
Installing easy_install-2.6 script to /usr/local/bin

Using /Library/Python/2.6/site-packages/setuptools-0.6c11-py2.6.egg
Processing dependencies for setuptools
Finished processing dependencies for setuptools
Searching for pycurl
Best match: pycurl 7.16.2.1
Processing pycurl-7.16.2.1-py2.6-macosx-10.6-universal.egg
pycurl 7.16.2.1 is already the active version in easy-install.pth

Using /Library/Python/2.6/site-packages/pycurl-7.16.2.1-py2.6-macosx-10.6-universal.egg
Processing dependencies for pycurl
Finished processing dependencies for pycurl

Поэтому я подумал, что pycurl был правильно установлен и работает, но когда я запустил свое приложение, python вернул мне ошибку:

python /Users/lorenzodenobili/Desktop/Python/AGGIORNATORE_PY/Dropbox/wxPython/test.py  
Traceback (most recent call last):  
  File  "/Users/lorenzodenobili/Desktop/Python/AGGIORNATORE_PY/Dropbox/wxPython/test.py", line 20, in <module>  
    import pycurl  
  File "build/bdist.macosx-10.6-universal/egg/pycurl.py", line 7, in <module>  
  File "build/bdist.macosx-10.6-universal/egg/pycurl.py", line 6, in __bootstrap__  
ImportError: dlopen(/Users/lorenzodenobili/.python-eggs/pycurl-7.16.2.1-py2.6-macosx-10.6-universal.egg-tmp/pycurl.so,  2): no suitable image found.  Did find:  
    /Users/lorenzodenobili/.python-eggs/pycurl-7.16.2.1-py2.6-macosx-10.6-universal.egg-tmp/pycurl.so: mach-o, but wrong architecture  

Я действительно понятия не имею, как решить эту ошибку, поэтому мне очень нужна ваша помощь!

Ответы [ 3 ]

2 голосов
/ 07 апреля 2011

Я столкнулся с той же проблемой при попытке установить из pip и easy_install.Я установил и начал работать, загрузив исходный код pycurl и скомпилировав его для Snow Leopard.В исходном каталоге pycurl перед запуском «python setup.py install», как говорится в install.txt, необходимо выполнить следующее:

gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -DHAVE_CURL_SSL=1 -I/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c src/pycurl.c -o build/temp.macosx-10.6-universal-2.6/src/pycurl.o

По сути, это те же флаги компиляции, КРОМЕ для -arch PPC, что приводило к его сбою на Snow Leopard.

Как только вы запустите указанную выше команду, вы можете запустить:

python setup.py install

И все должно работать.

1 голос
/ 07 мая 2010

Вы передали следующие флаги компилятору при компиляции PyCurl:

ARCHFLAGS="-arch x86_64"

Кажется, что вы скомпилировали PyCurl в 64-битном режиме, в то время как вы используете 32-битный Python.Вы пробовали это с ARCHFLAGS="-arch i386"?

0 голосов
/ 07 мая 2010

iMac: pycurl-7.19.0 lorenzodenobili $ sudo env ARCHFLAGS = "- arch i386" easy_install setuptools pycurl В поисках setuptools Лучший матч: setuptools 0.6c11 Обработка setuptools-0.6c11-py2.6.egg setuptools 0.6c11 уже активная версия в easy-install.pth Установка скрипта easy_install в / usr / local / bin Установка сценария easy_install-2.6 в / usr / local / bin

Использование /Library/Python/2.6/site-packages/setuptools-0.6c11-py2.6.egg Обработка зависимостей для setuptools Завершенные зависимости обработки для setuptools В поисках пикурла Чтение http://pypi.python.org/simple/pycurl/ Чтение http://pycurl.sourceforge.net/ Чтение http://pycurl.sourceforge.net/download/ Лучший матч: pycurl 7.19.0 Скачивание http://pycurl.sourceforge.net/download/pycurl-7.19.0.tar.gz Обработка pycurl-7.19.0.tar.gz Запуск pycurl-7.19.0 / setup.py -q bdist_egg --dist-dir /tmp/easy_install-tpClDx/pycurl-7.19.0/egg-dist-tmp-bGXtsd Использование curl-config (libcurl 7.20.0) В файле, включенном в /opt/local/include/curl/curl.h:36, от src / pycurl.c: 50: /opt/local/include/curl/curlrules.h:144: ошибка: размер массива 101 curl_rule_01 ’отрицательный /opt/local/include/curl/curlrules.h:154: ошибка: размер массива 101 curl_rule_02 ’- отрицательный ошибка: Сценарий установки завершен с ошибкой: команда 'gcc-4.2' завершилась неудачно с состоянием выхода 1

...