【发布时间】:2010-03-01 05:00:27
【问题描述】:
我在我的 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
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
安装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:运行$ 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 的详细回复。
【问题讨论】:
-
libxml2mod 的路径中有一些空格,这只是剪切和粘贴错误吗? (因为在两个不同的地方并不明显)
-
剪切和粘贴错误。终端 -> 所以 4-space-for-code-indent == 间距混乱
标签: python macos osx-snow-leopard libxml2