首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python3.1.2+雪豹+ lxml + XMLSchema

Python3.1.2+雪豹+ lxml + XMLSchema
EN

Stack Overflow用户
提问于 2010-07-07 21:22:45
回答 2查看 984关注 0票数 1

我想使用lxml库来验证Python 3.1.2中的XML模式。

由于Snow Leopard MAC OS附带安装了Python2.6.1,因此首先,我从http://www.python.org/ftp/python/3.1.2/python-3.1.2-macosx10.3-2010-03-24.dmg下载了Python3.1.2自动安装程序并进行了安装。

其次,我在http://pypi.python.org/packages/source/l/lxml/lxml-2.2.6.tar.gz下载了lxml 2.2.6,将其解压并按照http://wiki.python.org/moin/CheeseShopTutorial中的说明执行安装(即:)

代码语言:javascript
复制
  $ cd lxml-2.2.6
  $ python setup.py install

在我的Python2.6发行版站点-packages目录(/Library/ Python / 2.6 / site-packages )中顺利地安装了该包,但我希望将其安装在Python3.1发行版站点-packages目录(/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/site-packages).中

我试图用python3 setup.py install替换python setup.py install,但在控制台中收到了很多错误消息。使用easy_install lxml安装lxml也有同样的效果。

最后,我尝试简单地将Python 2.6发行版站点包目录的内容移动到Python 3.1发行版站点包目录,并运行测试脚本,如下所示:

代码语言:javascript
复制
try:
    from lxml import etree
    print("running with lxml.etree")
except ImportError:
    try:
        # Python 2.5
        import xml.etree.cElementTree as etree
        print("running with cElementTree on Python 2.5+")
    except ImportError:
        try:
            # Python 2.5
            import xml.etree.ElementTree as etree
            print("running with ElementTree on Python 2.5+")
        except ImportError:
            try:
                # normal cElementTree install
                import cElementTree as etree
                print("running with cElementTree")
            except ImportError:
                try:
                    # normal ElementTree install
                    import elementtree.ElementTree as etree
                    print("running with ElementTree")
                except ImportError:
                    print("Failed to import ElementTree from any known place")


schema_root = etree.parse('note.xsd').getroot()
schema = etree.XMLSchema(schema_root)
parser = etree.XMLParser(schema = schema)
root = etree.parse('note.xml', parser)

我在控制台中得到了这个错误消息:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/Users/eduardo/Workspace/PythonToolbox/TestProject/src/testproject/domparse.py", line 97, in <module>
    schema = etree.XMLSchema(schema_root)
AttributeError: 'module' object has no attribute 'XMLSchema'
running with cElementTree on Python 2.5+

根据Ned Deily的建议,我做了以下操作:

代码语言:javascript
复制
$ curl http://pypi.python.org/packages/source/l/lxml/lxml-2.2.6.tar.gz | tar xz 
$ cd lxml-2.2.6
$ python3 setup.py install

但是我收到了一些编译器错误信息,文件http://www.educoelho.com/files/output.txt

如何在Python3.1中运行lxml?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-08 02:07:15

如果要从源代码构建lxml,则需要完全使用所需的Python进行构建。一般来说,您不能简单地将站点包从一个Python实例移动到另一个实例,尤其是Python2与Python3。首先,撤消复制或移动到Python3站点包目录中所做的任何操作。如果你不确定你做了什么,你应该考虑重新安装Python 3.1。现在从tar文件中的lxml源代码的干净副本开始,并尝试使用python3.1构建它:

代码语言:javascript
复制
$ rm -r lxml-2.2.6
$ curl http://pypi.python.org/packages/source/l/lxml/lxml-2.2.6.tar.gz | tar xz 
$ cd lxml-2.2.6
$ python3 setup.py install

如果出现错误,请更新您的问题,以准确显示出现的错误消息。

编辑:相关的错误消息如下:

代码语言:javascript
复制
Compiling with an SDK that doesn't seem to exist: /Developer/SDKs/MacOSX10.4u.sdk

大多数python.org蟒蛇是为在多个版本的OS上工作而构建的,因此它们使用可选的10.4SDK。苹果用于10.6雪豹的Xcode安装程序包括10.4u SDK,但它不是默认安装的。您需要使用Xcode安装程序(在Snow Leopard DVD上或随新Mac附带的安装程序或从Apple Developer Connection下载)来安装它。

票数 1
EN

Stack Overflow用户

发布于 2011-07-04 16:43:53

我在Mac上安装lxml时也遇到了问题,但这对我很有效:

代码语言:javascript
复制
sudo env ARCHFLAGS="-arch i386 -arch x86_64" easy_install lxml
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3195067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档