我在我的 sl mbp 上安装 scrapy 真是太难了。它需要libxml2,所以我开始安装它。从 macports 安装它似乎并没有拉下 python 绑定。
通过scrapy的说明(here)从源代码安装它确实安装了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 dll 构建为 32 位时,该错误就会消失,但是由于其他一些库不是 32 位,因此 libxslt 将无法构建。我害怕继续拉那根绳子。所以问题是-python 仅 32 位吗?我在这里做一些愚蠢的事情吗?
编辑- 这是 python 2.6
编辑 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
安装macports版本的python
$ sudo port install python26
为 scrapy 安装 pre-reqs
sudo port install py26-libxml2 py26-twisted py26-openssl py26-simplejson py26-setuptools python_select
sudo python_select python26
测试是否选择了正确的 python: run $ which python
,它应该说一些类似于“/opt/local/bin/python”的内容,并且它本身应该是指向 /opt/local/bin/python2.6 的链接.
测试是否存在正确的架构:运行file 'which python'
(单引号应该是反引号,应该吐出(对于运行 10.6 的英特尔 mac):
/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'
如果一切顺利,您应该不会得到任何输出。
安装scrapy
sudo /opt/local/bin/easy_install-2.6 scrapy
穿过街道(衣着整齐),为一切都完成而欣喜若狂。再次感谢 ned 的详细回复。