117

I'm getting an error Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed? when trying to install lxml through pip.

  c:\users\f\appdata\local\temp\xmlXPathInitqjzysz.c(1) : fatal error C1083: Cannot open include file: 'libxml/xpath.h': No such file or directory
  *********************************************************************************
  Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed?
  *********************************************************************************
  error: command 'C:\\Users\\f\\AppData\\Local\\Programs\\Common\\Microsoft\\Visual C++ for Python\\9.0\\VC\\Bin\\cl.exe' failed with exit status 2

I don't find any libxml2 dev packages to install via pip.

Using Python 2.7 and Python 3.x on x86 in a virtualenv under Windows 10.

SaeX
  • 15,312
  • 15
  • 72
  • 92

11 Answers11

167

I had this issue and realised that whilst I did have libxml2 installed, I didn't have the necessary development libraries required by the python package. Installing them solved the problem:

sudo apt-get install libxml2-dev libxslt1-dev
sudo pip install lxml
Camilo Silva
  • 7,700
  • 4
  • 38
  • 57
practual
  • 2,333
  • 2
  • 10
  • 12
138

Install lxml from http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml for your python version. It's a precompiled WHL with required modules/dependencies.

The site lists several packages, when e.g. using Win32 Python 3.9, use lxml‑4.5.2‑cp39‑cp39‑win32.whl.

Download the file, and then install with:

pip install C:\path\to\downloaded\file\lxml‑4.5.2‑cp39‑cp39‑win32.whl
SaeX
  • 15,312
  • 15
  • 72
  • 92
38

Try to use:
easy_install lxml
That works for me, win10, python 2.7.

Zing Lee
  • 710
  • 6
  • 10
23

On Mac OS X El Capitan I had to run these two commands to fix this error:

xcode-select --install
pip install lxml

Which ended up installing lxml-3.5.0

When you run the xcode-select command you may have to sign a EULA (so have an X-Term handy for the UI if you're doing this on a headless machine).

Jason D
  • 7,485
  • 9
  • 33
  • 38
  • 2
    Yup, that do the trick for me in OS X El Capitan. In fact, if you scrolls up the screen to see the root cause of the error, there is a line there says "Perhaps try: xcode-select --install" – Devy Jan 29 '16 at 22:18
  • This fixed it, and there is a line that does suggest this as commented above! – jfive Apr 05 '16 at 21:34
  • 1
    Does anyone else feel like they've run `xcode-select --install` before, though? Is there any introspection on what this does either a first or second time? As a note, though I did not have to install `lxml` globally for it to work in a virtual environment, so at least there is that. – lol Jun 13 '16 at 09:59
21

In case anyone else has the same issue as this on

Centos, try:

yum install python-lxml

Ubuntu

sudo apt-get install -y python-lxml

worked for me.

suryakrupa
  • 3,464
  • 1
  • 21
  • 33
J1MF0X
  • 649
  • 1
  • 6
  • 4
10
set STATICBUILD=true && pip install lxml

run this command instead, must have VS C++ compiler installed first

https://blogs.msdn.microsoft.com/pythonengineering/2016/04/11/unable-to-find-vcvarsall-bat/

It works for me with Python 3.5.2 and Windows 7

BigDav
  • 149
  • 1
  • 3
2

I tried install a lib that depends lxml and nothing works. I see a message when build was started: "Building without Cython", so after install cython with apt-get install cython, lxml was installed.

gabrieloliveira
  • 550
  • 3
  • 10
1

It is not strange for me that none of the solutions above came up, but I saw how the igd installation removed the new version and installed the old one, for the solution I downloaded this archive:https://pypi.org/project/igd/#files

and changed the recommended version of the new version: 'lxml==4.3.0' in setup.py It works!

0

I got the same error for python 32 bit. After install 64bit, the problem was fixed.

Nishara MJ
  • 389
  • 2
  • 12
0

I had this issue and realized that while I did have libxml2 installed, I didn't have the necessary development libraries required by the python package.

1) Installing them solved the problem:

The site to download the file: Download

2) After Installing the file save it in a accessible folder

pip install *path to that file*
-1

I am using venv.

In my case it was enough to add lxml==4.6.3 to requirements.txt.

One library wanted earlier version and this was causing this error, so when I forced pip to use newest version (currently 4.6.3) installation was successful.

Karol Zlot
  • 1,495
  • 1
  • 12
  • 26