Установка lxml, libxml2, libxslt для Python 3.5 в Windows 10

Сначала я пытаюсь запустить для него базовую команду pip install:

C:\Program Files (x86)\Python35-32>pip install lxml
Collecting lxml
  Using cached lxml-3.6.4.tar.gz
Building wheels for collected packages: lxml
  Running setup.py bdist_wheel for lxml ... error
  Complete output from command "c:\program files (x86)\python35-32\python.exe" -u -c "import setuptools, tokenize;__file__='C:\\Users\\Djidiouf\\AppData\\Local\\Temp\\pip-build-ovqa6ncd\\lxml\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d C:\Users\Djidiouf\AppData\Local\Temp\tmp9hzx5gztpip-wheel- --python-tag cp35:
  Building lxml version 3.6.4.
  Building without Cython.
  ERROR: b"'xslt-config' is not recognized as an internal or external command,\r\noperable program or batch file.\r\n"
  ** make sure the development packages of libxml2 and libxslt are installed **


  C:\Users\Djidiouf\AppData\Local\Temp\xmlXPathInitbqgvj3pt.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:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\cl.exe' failed with exit status 2

    ----------------------------------------
Command ""c:\program files (x86)\python35-32\python.exe" -u -c "import setuptools, tokenize;__file__='C:\\Users\\Djidiouf\\AppData\\Local\\Temp\\pip-build-ovqa6ncd\\lxml\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\Djidiouf\AppData\Local\Temp\pip-kk7fdpzx-record\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\Djidiouf\AppData\Local\Temp\pip-build-ovqa6ncd\lxml\

Я пытался установить libxml2:

C:\Program Files (x86)\Python35-32>pip install libxml2
Collecting libxml2
  Could not find a version that satisfies the requirement libxml2 (from versions: )
No matching distribution found for libxml2

И я также попытался установить libxslt:

C:\Program Files (x86)\Python35-32>pip install libxslt
Collecting libxslt
  Could not find a version that satisfies the requirement libxslt (from versions: )
No matching distribution found for libxslt

Я также пытался собрать lxml из исходников ( https://github.com/lxml/lxml), но для этого также нужны зависимости libxml2.

Я также попытался установить его с помощью wheel после загрузки файла lxml с http://www.lfd.uci.edu/~gohlke/pythonlibs/:

C:\Program Files (x86)\Python35-32>pip install C:\Users\Djidiouf\Downloads\lxml-3.6.4-cp35-cp35m-win_amd64.whl
lxml-3.6.4-cp35-cp35m-win_amd64.whl is not a supported wheel on this platform.

Кажется, этот файл колеса не поддерживает ни Windows 10, ни Python 3.5.

Любая помощь будет оценена.

1 ответ

Решение

lxml использования libxml2, libxslt (на заднем плане) но libxml2, libxslt это не модули Python - это библиотеки C/C++. Так что вы не можете установить их с помощью pip. Вы должны загрузить и установить их вручную.

Вы можете найти предварительно скомпилированный lxml для Windows на неофициальных двоичных файлах Windows для пакетов расширения Python

  • cp35 в названии файла подразумевается версия для Python 3.5.
  • win32 в названии файла подразумевается версия для 32-битного Python.
  • amd64 в названии файла подразумевается версия для 64-битного Python.

Вы, вероятно, используете 32-битный Python, потому что я вижу 32 а также (x86) на вашем пути

C:\program files (x86)\python35-32\python.exe

Вы должны найти ссылки на libxml2, libxslt на этой странице тоже. В этих библиотеках есть файлы.dll и.exe, и вы можете поместить их в любую папку, которая находится в PATH переменная. Библиотеки в основном установлены в C:\Windows или в подпапке.

libxml2, libxslt может также иметь заголовочные файлы C/C++ *.h что вам может понадобиться при компиляции lxml, (в Linux эти файлы находятся в отдельных пакетахlibxml2-dev, libxslt-dev)


Кстати: вы можете использовать Anaconda распределение (вместо Python.org распределение). Он устанавливает тот же Python, но с некоторыми предварительно скомпилированными модулями - т.е. это устанавливает lxml автоматически. Anaconda может быть лучшим решением для пользователей Windows.

Список всех модулей: https://docs.continuum.io/anaconda/pkg-docs

Также проверьте свой pip --version. У меня была версия 19.0, и двоичные файлы Gohlke .whl не устанавливались. Обновите до 19.2 или выше.

Другие вопросы по тегам