Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 需要在os x 10.7上安装lxml的帮助吗_Python_Lxml_Libxml2_Pip_Homebrew - Fatal编程技术网

Python 需要在os x 10.7上安装lxml的帮助吗

Python 需要在os x 10.7上安装lxml的帮助吗,python,lxml,libxml2,pip,homebrew,Python,Lxml,Libxml2,Pip,Homebrew,我一直在努力从lxml导入etree执行(导入lxml工作正常)错误是: ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site- packages/lxml/etree.so, 2): Symbol not found: _htmlParseChunk Referenced from: /Library/Frameworks/Python.framew

我一直在努力从lxml导入etree执行
导入lxml
工作正常)错误是:

ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-            packages/lxml/etree.so, 2): Symbol not found: _htmlParseChunk
Referenced from: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/lxml/etree.so
Expected in: flat namespace
in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/lxml/etree.so

我使用pip安装lxml,使用homebrew以正确的体系结构重新安装libxml2(或者我认为是这样)…有人知道如何修复/诊断这个问题吗?我使用的是64位python

lxml
对它使用的第三方库有点挑剔,而且它通常需要比苹果提供的更新版本。建议您阅读并按照说明在Mac OS X上从源代码构建
lxml
,包括构建自己的静态链接库。这应该行得通。(我有点惊讶,自制软件还没有lxml配方。)

更新:基于你评论中的有限信息,很难确定到底发生了什么。我怀疑您使用的不是您认为的Python版本。有多种方法可以成功安装lxml;这就是问题的一部分:选择太多了。这里可能是使用苹果提供的Python2.7系统在10.7上运行lxml的最简单方法,而不是调试您的设置

$ sudo STATIC_DEPS=true /usr/bin/easy_install-2.7 lxml
然后,您应该能够通过以下方式使用
lxml.etree

$ /usr/bin/python2.7
Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from lxml import etree
>>> etree.__file__
'/Library/Python/2.7/site-packages/lxml-2.3.1-py2.7-macosx-10.7-intel.egg/lxml/etree.so'
>>> 
但是我注意到,
lxml
静态构建过程并没有生成一个通用的工作构建。在
lxml
安装过程中,您可能会看到这样的消息:

ld: warning: ignoring file /private/tmp/easy_install-83mJsV/lxml-2.3.1/build/tmp/libxml2/lib/libxslt.a, file was built for archive which is not the architecture being linked (i386)
假设计算机上的默认体系结构为64位,如果尝试在32位模式下运行:

$ arch -i386 /usr/bin/python2.7
Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:06) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from lxml import etree
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: dlopen(/Library/Python/2.7/site-packages/lxml-2.3.1-py2.7-macosx-10.7-intel.egg/lxml/etree.so, 2): Symbol not found: _htmlParseChunk
  Referenced from: /Library/Python/2.7/site-packages/lxml-2.3.1-py2.7-macosx-10.7-intel.egg/lxml/etree.so
  Expected in: flat namespace
 in /Library/Python/2.7/site-packages/lxml-2.3.1-py2.7-macosx-10.7-intel.egg/lxml/etree.so
>>> ^D
$arch-i386/usr/bin/python2.7
Python 2.7.1(r271:8683210116月16日,16:59:06)
[GCC 4.2.1(基于苹果公司5658版本)(LLVM版本2335.15.00)]关于达尔文
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>从lxml导入etree
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ImportError:dlopen(/Library/Python/2.7/site-packages/lxml-2.3.1-py2.7-macosx-10.7-intel.egg/lxml/etree.so,2):未找到符号:_htmlParseChunk
引用自:/Library/Python/2.7/site-packages/lxml-2.3.1-py2.7-macosx-10.7-intel.egg/lxml/etree.so
应为:平面命名空间
在/Library/Python/2.7/site-packages/lxml-2.3.1-py2.7-macosx-10.7-intel.egg/lxml/etree.so中
>>>^D

这是您最初报告的错误消息!因此,造成这种情况的根本原因似乎是
lxml
构建的静态库(
libxml2
等)不是通用的。只要您不需要在32位进程中使用
lxml
(大多数情况下不太可能),这应该不会是一个问题。您最初使用的Python很可能是32位的;这与您报告的其他一些消息是一致的。

尝试在
etree.so
上使用
otool-L
查看它正在搜索的库路径。其输出为
etree.so:/usr/lib/libSystem.B.dylib(兼容版本1.0.0,当前版本125.2.1)
…我不确定该如何处理此信息,尽管我注意到它输出的路径上没有文件OK-我只是这样做了,并在安装结束时注意到了一条但书:此公式仅为keg,因此它没有符号链接到/usr/local。MacOSX已经提供了这个程序,同时安装另一个版本可能会引起各种各样的麻烦。一般来说,这对你没有任何影响。如果您构建自己的软件,并且它需要这个公式,那么您需要将其lib和include路径添加到构建变量:LDFLAGS-L/usr/local/cillar/libxslt/1.1.26/lib CPPFLAGS-I/usr/local/cillar/libxslt/1.1.26/includedoes,这意味着我在安装lxml时需要做些什么?另外,在用自制软件安装libxslt之后,我仍然会犯同样的错误。我认为lxml使用了错误的libxml2和libxslt来构建,这可能吗?我忘了lxml有多挑剔了。请参阅更新的答案
lxml
可安装在10.7上;MacPorts没有问题。我试着用静态deps。。。它失败于此:-I/Users/patrickbrooks/Downloads/lxml-lxml-6d1e124/build/tmp/libxml2/include/libxslt-I/Users/patrickbrooks/Downloads/lxml-lxml-6d1e124/build/tmp/libxml2/include/libexslt-I/opt/local/Library/Frameworks/Python.framework/Versions/2.6-c src/lxml/lxml/lxml.etree.c-obuild/temp.macosx-10.5-x86_64-2.6/src/lxml/lxml.etree.o-w-flat_命名空间无法执行/usr/bin/gcc-4.0:没有此类文件或目录错误:命令“/usr/bin/gcc-4.0”失败,退出状态为1