| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- Installing lxml
- ===============
- .. contents:: :depth: 1
- ..
- 1 Where to get it
- 2 Requirements
- 3 Installation
- 4 Building lxml from dev sources
- 5 Using lxml with python-libxml2
- 6 Source builds on MS Windows
- 7 Source builds on MacOS-X
- Where to get it
- ---------------
- lxml is generally distributed through PyPI_.
- .. _PyPI: http://pypi.python.org/pypi/lxml
- Most **Linux** platforms come with some version of lxml readily
- packaged, usually named ``python-lxml`` for the Python 2.x version
- and ``python3-lxml`` for Python 3.x. If you can use that version,
- the quickest way to install lxml is to use the system package
- manager, e.g. ``apt-get`` on Debian/Ubuntu::
- sudo apt-get install python3-lxml
- For **MacOS-X**, a `macport <http://macports.org/>`_ of lxml is available.
- Try something like
- ::
- sudo port install py27-lxml
- To install a newer version or to install lxml on other systems,
- see below.
- Requirements
- ------------
- You need Python 2.7 or 3.4+.
- Unless you are using a static binary distribution (e.g. from a
- Windows binary installer), lxml requires libxml2 and libxslt to
- be installed, in particular:
- * `libxml2 <http://xmlsoft.org/>`_ version 2.9.2 or later.
- * `libxslt <http://xmlsoft.org/XSLT/>`_ version 1.1.27 or later.
- * We recommend libxslt 1.1.28 or later.
- Newer versions generally contain fewer bugs and are therefore
- recommended. XML Schema support is also still worked on in libxml2,
- so newer versions will give you better compliance with the W3C spec.
- To install the required development packages of these dependencies
- on Linux systems, use your distribution specific installation tool,
- e.g. apt-get on Debian/Ubuntu::
- sudo apt-get install libxml2-dev libxslt-dev python-dev
- For Debian based systems, it should be enough to install the known
- build dependencies of the provided lxml package, e.g.
- ::
- sudo apt-get build-dep python3-lxml
- Installation
- ------------
- If your system does not provide binary packages or you want to install
- a newer version, the best way is to get the pip_ package management tool
- (or use a `virtualenv <https://pypi.python.org/pypi/virtualenv>`_) and
- run the following::
- pip install lxml
- If you are not using pip in a virtualenv and want to install lxml globally
- instead, you have to run the above command as admin, e.g. on Linux::
- sudo pip install lxml
- To install a specific version, either download the distribution
- manually and let pip install that, or pass the desired version
- to pip::
- pip install lxml==3.4.2
- .. _pip: http://pypi.python.org/pypi/pip
- To speed up the build in test environments, e.g. on a continuous
- integration server, disable the C compiler optimisations by setting
- the ``CFLAGS`` environment variable::
- CFLAGS="-O0" pip install lxml
- (The option reads "minus Oh Zero", i.e. zero optimisations.)
- MS Windows
- ..........
- For MS Windows, recent lxml releases feature community donated
- binary distributions, although you might still want to take a look
- at the related `FAQ entry <FAQ.html#where-are-the-binary-builds>`_.
- If you fail to build lxml on your MS Windows system from the signed
- and tested sources that we release, consider using the binary builds
- from PyPI or the `unofficial Windows binaries
- <http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml>`_
- that Christoph Gohlke generously provides.
- Linux
- .....
- On Linux (and most other well-behaved operating systems), ``pip`` will
- manage to build the source distribution as long as libxml2 and libxslt
- are properly installed, including development packages, i.e. header files,
- etc. See the requirements section above and use your system package
- management tool to look for packages like ``libxml2-dev`` or
- ``libxslt-devel``. If the build fails, make sure they are installed.
- Alternatively, setting ``STATIC_DEPS=true`` will download and build
- both libraries automatically in their latest version, e.g.
- ``STATIC_DEPS=true pip install lxml``.
- MacOS-X
- .......
- On MacOS-X, use the following to build the source distribution,
- and make sure you have a working Internet connection, as this will
- download libxml2 and libxslt in order to build them::
- STATIC_DEPS=true sudo pip install lxml
- Building lxml from dev sources
- ------------------------------
- If you want to build lxml from the GitHub repository, you should read
- `how to build lxml from source`_ (or the file ``doc/build.txt`` in the
- source tree). Building from developer sources or from modified
- distribution sources requires Cython_ to translate the lxml sources
- into C code. The source distribution ships with pre-generated C
- source files, so you do not need Cython installed to build from
- release sources.
- .. _Cython: http://www.cython.org
- .. _`how to build lxml from source`: build.html
- If you have read these instructions and still cannot manage to install lxml,
- you can check the archives of the `mailing list`_ to see if your problem is
- known or otherwise send a mail to the list.
- .. _`mailing list`: http://lxml.de/mailinglist/
- Using lxml with python-libxml2
- ------------------------------
- If you want to use lxml together with the official libxml2 Python
- bindings (maybe because one of your dependencies uses it), you must
- build lxml statically. Otherwise, the two packages will interfere in
- places where the libxml2 library requires global configuration, which
- can have any kind of effect from disappearing functionality to crashes
- in either of the two.
- To get a static build, either pass the ``--static-deps`` option to the
- setup.py script, or run ``pip`` with the ``STATIC_DEPS`` or
- ``STATICBUILD`` environment variable set to true, i.e.
- ::
- STATIC_DEPS=true pip install lxml
- The ``STATICBUILD`` environment variable is handled equivalently to
- the ``STATIC_DEPS`` variable, but is used by some other extension
- packages, too.
- Source builds on MS Windows
- ---------------------------
- Most MS Windows systems lack the necessarily tools to build software,
- starting with a C compiler already. Microsoft leaves it to users to
- install and configure them, which is usually not trivial and means
- that distributors cannot rely on these dependencies being available
- on a given system. In a way, you get what you've paid for and make
- others pay for it.
- Due to the additional lack of package management of this platform,
- it is best to link the library dependencies statically if you decide
- to build from sources, rather than using a binary installer. For
- that, lxml can use the `binary distribution of libxml2 and libxslt
- <http://www.zlatkovic.com/libxml.en.html>`_, which it downloads
- automatically during the static build. It needs both libxml2 and
- libxslt, as well as iconv and zlib, which are available from the
- same download site. Further build instructions are in the
- `source build documentation <build.html>`_.
- Source builds on MacOS-X
- ------------------------
- If you are not using macports or want to use a more recent lxml
- release, you have to build it yourself. While the pre-installed system
- libraries of libxml2 and libxslt are less outdated in recent MacOS-X
- versions than they used to be, so lxml should work with them out of the
- box, it is still recommended to use a static build with the most recent
- library versions.
- Luckily, lxml's ``setup.py`` script has built-in support for building
- and integrating these libraries statically during the build. Please
- read the
- `MacOS-X build instructions <build.html#building-lxml-on-macos-x>`_.
|