我花了很长时间在我的slmbp上安装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
当我显式地将libxml2dll构建为32位时,这个错误就消失了,但是libxslt不会构建,因为其他一些库不是32位的。我不敢再拉那根绳子了。所以问题是——python是32位的吗?我在这里做蠢事吗?在
编辑-这是python2.6
编辑2-根据大众需求,我在这里整合@Ned Deily的精彩答案。所有的功劳都归功于他,我只是根据他的回答发布了我所采取的步骤:
如果你一直在摆弄mac端口,(而且没有通过它们安装任何你需要的东西),那么就用核弹吧。在
^{pr2}$将以下内容添加到/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
安装废料的预先要求
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的链接。在
测试是否存在正确的体系结构:run file 'which python'
(单引号应该是反撇号,应该是倒数(对于运行10.6的intel 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'
如果一切顺利,你就不会得到任何产出。在
安装碎屑
sudo /opt/local/bin/easy_install-2.6 scrapy
在街上跑来跑去(全副武装)庆幸一切都完成了。再次感谢内德的详细回应。在
从回溯中的路径来看,您似乎已安装并正在尝试使用python.org网站Python2.6.4(安装到}添加到任何其他包含Python的目录之前。像这样的东西应该有用(未经测试!)公司名称:
/Library/Frameworks/Python.frameworks
…)。那个python只有32位。默认情况下,在10.6上,MacPorts会尝试安装64位版本的软件包。您可以通过在MacPorts安装命令中指定+universal
变量或将其添加到/opt/local/etc/macports/variants.conf
中,来更改大多数MacPorts包的这一点。但是,由于您需要各种各样的软件包,如果您只需要为您自己的机器安装一个完整的python2.6 64位解决方案,您可能会发现使用MacPorts安装一个完整的python2.6 64位解决方案要容易得多。除了scrapy本身,您应该已经找到了您需要的几乎所有包。您需要修改您的$PATH,将/opt/local/Library/Frameworks/Python.framework/Versions/2.6/bin
和{编辑:对于10.6,由于64位模式下缺少Tk支持的一些问题,Tk默认为X11版本,您可能既不想要也不需要。我在10.6的
^{pr2}$/opt/local/etc/macports/variants.conf
中添加了以下变体(并非所有变体都适用于python和friends):编辑:如果MacPorts安装正确,您将在10.6上看到类似这样的内容:
如果您添加了
+universal
变体,否则您可能只看到一个x86u64或i386架构。在使用相对路径时,请确保shell$PATH首先具有两个MacPorts目录:
您可能需要编辑您的
~/.bash_profile
或其他shell文件,使该更改成为“永久性的”。如果希望裸的python
命令引用MacPorts Python,请确保运行上面显示的python_select
命令。如果您仍然有问题,MacPorts的一个优点是很容易删除并重新开始;只需:下载MacPorts10.6安装程序。但你真的不应该那么做。我认为这将是你的最佳利益得到修复和工作,因为它可能会节省你很多头痛在未来。在
正在尝试安装,但仍在挣扎。 当我:
我收到错误信息,它就停止了
^{pr2}$取而代之的是,我从头开始做的很好。在
那我试试你写的
/path/to/scrapy在哪里?这是:
或者
还是在别的地方?在
我有一张小纸条要投稿。在试图继续这篇文章时,我首先安装了三个Python:
我的问题是:
当我需要使用Macports版本时,它总是默认为2.7。以下情况没有帮助:
^{pr2}$我甚至删除了只导致错误的2.7版本。在
我发现我需要使用以下方法更改Macports版本的默认路径:
然后重新初始化端口等
最后,我没能参考到那篇文章-控制打印文件默认通过这些说明,所以我不得不参考的碎片-控制打印直接归档
更新
这篇文章的一个快速补遗,包含创建链接的说明,找到了on the Scrapy site(#2和#3)。在
从#2开始,“将碎片添加到Python路径”
和#3,“使垃圾命令可用”
相关问题 更多 >
编程相关推荐