У меня чертовски много времени на том, чтобы установить скрап на моем слэ мбп. это требует libxml2, поэтому я приступил к его установке. установка его из macports, похоже, не снимает привязку с python.
установка его из источника с помощью инструкций scrapy ( здесь ) действительно устанавливает привязки python, но когда я запускаю 'python -c "import libxml2"', я получаю несоответствие архитектуры:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "libxml2.py", line 1, in <module>
import libxml2mod
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site- packages/libxml2mod.so, 2): no suitable image found. Did find:
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site- packages/libxml2mod.so: mach-o, but wrong architecture
когда я явно собираю библиотеки libxml2, чтобы они были 32-битными, эта ошибка исчезает, но тогда libxslt не будет собираться из-за того, что некоторые другие библиотеки не являются 32-битными. Я боюсь продолжать тянуть за эту струну. так что вопрос - только 32-битный питон? я делаю что-то глупое здесь?
edit - это python 2.6
edit 2 - по многочисленным просьбам я собираю здесь потрясающий ответ @Ned Deily. все заслуги перед ним, я просто публикую шаги, которые я предпринял, основываясь на его ответе:
если вы крутились с портами Mac (и не устанавливали через них ничего, что вам нужно), взломайте их.
$ sudo rm -r /opt/local
добавить следующее к /opt/local/etc/macports/variants.conf
, чтобы предотвратить загрузку всей библиотеки unix с помощью следующих команд
+bash_completion +quartz +ssl +no_x11 +no_neon +no_tkinter +universal +libyaml -scientific
установить версию Python для Macports
$ sudo port install python26
установить предварительные требования для скрапа
sudo port install py26-libxml2 py26-twisted py26-openssl py26-simplejson py26-setuptools python_select
sudo python_select python26
проверить, что выбран правильный питон: запустите $ which python
, который должен что-то сказать в соответствии с '/ opt / local / bin / python', и что он сам по себе должен быть ссылкой на / opt / local /bin/python2.6.
проверить наличие правильных архитектур: запустите file 'which python'
(одинарные кавычки должны быть обратными галочками, которые должны выплевываться (для intel macs работает 10.6):
/opt/local/bin/python2.6: Mach-O universal binary with 2 architectures
/opt/local/bin/python2.6 (for architecture x86_64): Mach-O 64-bit executable x86_64
/opt/local/bin/python2.6 (for architecture i386): Mach-O executable i386
проверить, что libxml успешно установлен
$ python -c 'import libxml2'
если все хорошо, вы не должны получать вывод.
установка скрапа
sudo /opt/local/bin/easy_install-2.6 scrapy
бегать по улицам (полностью одетым), радуясь, что все сделано. еще раз, спасибо Неду за подробный ответ.