Installing lxml =============== Requirements ------------ You need libxml2 and libxslt, in particular: * libxml 2.6.16 (newer versions should work). It can be found here: http://xmlsoft.org/downloads.html * libxslt 1.1.12 (newer versions should work). It can be found here: http://xmlsoft.org/XSLT/downloads.html You also need Pyrex (0.9.3) to compile the software. It can be found here: * http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/ You also need Python 2.3 (Python 2.4 also ought to work). Installation ------------ Type:: python setup.py install to compile and install the library. It's also possible to do this:: python2.3 setup.py build_ext -i or just:: make This will not install lxml, but if you place lxml's "src" on your PYTHONPATH somehow, you can import it and play with it. Building lxml with gcc 4.0 -------------------------- Pyrex 0.9.3 generates C code that gcc 4.0 does not accept. Pending an official release of a version of Pyrex that does work with gcc 4.0, here's a patch to Pyrex that makes lxml compile and appear to work with gcc 4.0: http://codespeak.net/lxml/Pyrex-0.9.3-gcc4.patch Some Linux distributions such as Fedora Core 4 and Ubuntu Linux may already have most of this applied. In that case, this smaller patch may be applicable to make lxml compile properly: http://codespeak.net/lxml/Pyrex-0.9.3-gcc4-small.patch It may however actually be that at the time you read this, this extra patch has been applied by the distributions as well. Troubleshooting --------------- lxml's setup.py tries to be smart and uses libxml2's xml2-config to find the installation path of libxml2. If this cannot be found or doesn't work for some reason or another, try editing the setup.py, by changing this:: # if you want to configure include dir manually, you can do so here, # for instance: # include_dirs = ['/usr/include/libxml2'] include_dirs = guess_include_dirs() Into something like this:: include_dirs = ['/usr/include/libxml2'] If that still doesn't work, try registering the extension in a different way entirely; there's a commented block of code at the bottom of setup.py with an example. If you still have trouble, contact us on the `mailing list`_. .. _`mailing list`: http://codespeak.net/mailman/listinfo/lxml-dev Running the tests ----------------- You can run the main tests by using:: python test.py Alternatively, you can use:: make test To run the ElementTree and cElementTree compatibility tests, make sure you have lxml on your PYTHONPATH first, then run:: python2.3 selftest.py and:: python2.3 selftest2.py If the tests give failures, errors, or worse, segmentation faults, we'd really like to know. Please contact us on the `mailing list`_, and please specify the version of libxml2, libxslt and Python you were using. .. _`mailing list`: http://codespeak.net/mailman/listinfo/lxml-dev