web-dev-qa-db-fra.com

Comment installer lxml sur Windows

J'essaie d'installer lmxl sur mon ordinateur portable Windows 8.1 avec Python 3.4 et échoue lamentablement.

Tout d'abord, j'ai essayé la solution simple et évidente: pip install lxml. Cependant, cela n'a pas fonctionné. Voici ce qu'il a dit:

Downloading/unpacking lxml
  Running setup.py (path:C:\Users\CARTE_~1\AppData\Local\Temp\pip_build_carte_000\lxml\setup.py) Egg_info for package lxml
    Building lxml version 3.4.2.
    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 **

    Using build configuration of libxslt
    C:\Python34\lib\distutils\dist.py:260: UserWarning: Unknown distribution option: 'bugtrack_url'
      warnings.warn(msg)

    warning: no previously-included files found matching '*.py'
Installing collected packages: lxml
  Running setup.py install for lxml
    Building lxml version 3.4.2.
    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 **

    Using build configuration of libxslt
    building 'lxml.etree' extension
    C:\Python34\lib\distutils\dist.py:260: UserWarning: Unknown distribution option: 'bugtrack_url'
      warnings.warn(msg)
    error: Unable to find vcvarsall.bat
    Complete output from command C:\Python34\python.exe -c "import setuptools, tokenize;__file__='C:\\Users\\CARTE_~1\\AppData\\Local\\Temp\\pip_build_carte_000\\lxml\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record C:\Users\CARTE_~1\AppData\Local\Temp\pip-l8vvrv9g-record\install-record.txt --single-version-externally-managed --compile:
    Building lxml version 3.4.2.

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 **



Using build configuration of libxslt

running install

running build

running build_py

creating build

creating build\lib.win32-3.4

creating build\lib.win32-3.4\lxml

copying src\lxml\builder.py -> build\lib.win32-3.4\lxml

copying src\lxml\cssselect.py -> build\lib.win32-3.4\lxml

copying src\lxml\doctestcompare.py -> build\lib.win32-3.4\lxml

copying src\lxml\ElementInclude.py -> build\lib.win32-3.4\lxml

copying src\lxml\pyclasslookup.py -> build\lib.win32-3.4\lxml

copying src\lxml\sax.py -> build\lib.win32-3.4\lxml

copying src\lxml\usedoctest.py -> build\lib.win32-3.4\lxml

copying src\lxml\_elementpath.py -> build\lib.win32-3.4\lxml

copying src\lxml\__init__.py -> build\lib.win32-3.4\lxml

creating build\lib.win32-3.4\lxml\includes

copying src\lxml\includes\__init__.py -> build\lib.win32-3.4\lxml\includes

creating build\lib.win32-3.4\lxml\html

copying src\lxml\html\builder.py -> build\lib.win32-3.4\lxml\html

copying src\lxml\html\clean.py -> build\lib.win32-3.4\lxml\html

copying src\lxml\html\defs.py -> build\lib.win32-3.4\lxml\html

copying src\lxml\html\diff.py -> build\lib.win32-3.4\lxml\html

copying src\lxml\html\ElementSoup.py -> build\lib.win32-3.4\lxml\html

copying src\lxml\html\formfill.py -> build\lib.win32-3.4\lxml\html

copying src\lxml\html\html5parser.py -> build\lib.win32-3.4\lxml\html

copying src\lxml\html\soupparser.py -> build\lib.win32-3.4\lxml\html

copying src\lxml\html\usedoctest.py -> build\lib.win32-3.4\lxml\html

copying src\lxml\html\_diffcommand.py -> build\lib.win32-3.4\lxml\html

copying src\lxml\html\_html5builder.py -> build\lib.win32-3.4\lxml\html

copying src\lxml\html\_setmixin.py -> build\lib.win32-3.4\lxml\html

copying src\lxml\html\__init__.py -> build\lib.win32-3.4\lxml\html

creating build\lib.win32-3.4\lxml\isoschematron

copying src\lxml\isoschematron\__init__.py -> build\lib.win32-3.4\lxml\isoschematron

copying src\lxml\lxml.etree.h -> build\lib.win32-3.4\lxml

copying src\lxml\lxml.etree_api.h -> build\lib.win32-3.4\lxml

copying src\lxml\includes\c14n.pxd -> build\lib.win32-3.4\lxml\includes

copying src\lxml\includes\config.pxd -> build\lib.win32-3.4\lxml\includes

copying src\lxml\includes\dtdvalid.pxd -> build\lib.win32-3.4\lxml\includes

copying src\lxml\includes\etreepublic.pxd -> build\lib.win32-3.4\lxml\includes

copying src\lxml\includes\htmlparser.pxd -> build\lib.win32-3.4\lxml\includes

copying src\lxml\includes\relaxng.pxd -> build\lib.win32-3.4\lxml\includes

copying src\lxml\includes\schematron.pxd -> build\lib.win32-3.4\lxml\includes

copying src\lxml\includes\tree.pxd -> build\lib.win32-3.4\lxml\includes

copying src\lxml\includes\uri.pxd -> build\lib.win32-3.4\lxml\includes

copying src\lxml\includes\xinclude.pxd -> build\lib.win32-3.4\lxml\includes

copying src\lxml\includes\xmlerror.pxd -> build\lib.win32-3.4\lxml\includes

copying src\lxml\includes\xmlparser.pxd -> build\lib.win32-3.4\lxml\includes

copying src\lxml\includes\xmlschema.pxd -> build\lib.win32-3.4\lxml\includes

copying src\lxml\includes\xpath.pxd -> build\lib.win32-3.4\lxml\includes

copying src\lxml\includes\xslt.pxd -> build\lib.win32-3.4\lxml\includes

copying src\lxml\includes\etree_defs.h -> build\lib.win32-3.4\lxml\includes

copying src\lxml\includes\lxml-version.h -> build\lib.win32-3.4\lxml\includes

creating build\lib.win32-3.4\lxml\isoschematron\resources

creating build\lib.win32-3.4\lxml\isoschematron\resources\rng

copying src\lxml\isoschematron\resources\rng\iso-schematron.rng -> build\lib.win32-3.4\lxml\isoschematron\resources\rng

creating build\lib.win32-3.4\lxml\isoschematron\resources\xsl

copying src\lxml\isoschematron\resources\xsl\RNG2Schtrn.xsl -> build\lib.win32-3.4\lxml\isoschematron\resources\xsl

copying src\lxml\isoschematron\resources\xsl\XSD2Schtrn.xsl -> build\lib.win32-3.4\lxml\isoschematron\resources\xsl

creating build\lib.win32-3.4\lxml\isoschematron\resources\xsl\iso-schematron-xslt1

copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_abstract_expand.xsl -> build\lib.win32-3.4\lxml\isoschematron\resources\xsl\iso-schematron-xslt1

copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_dsdl_include.xsl -> build\lib.win32-3.4\lxml\isoschematron\resources\xsl\iso-schematron-xslt1

copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_schematron_message.xsl -> build\lib.win32-3.4\lxml\isoschematron\resources\xsl\iso-schematron-xslt1

copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_schematron_skeleton_for_xslt1.xsl -> build\lib.win32-3.4\lxml\isoschematron\resources\xsl\iso-schematron-xslt1

copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_svrl_for_xslt1.xsl -> build\lib.win32-3.4\lxml\isoschematron\resources\xsl\iso-schematron-xslt1

copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\readme.txt -> build\lib.win32-3.4\lxml\isoschematron\resources\xsl\iso-schematron-xslt1

running build_ext

building 'lxml.etree' extension

C:\Python34\lib\distutils\dist.py:260: UserWarning: Unknown distribution option: 'bugtrack_url'

  warnings.warn(msg)

error: Unable to find vcvarsall.bat

----------------------------------------
Cleaning up...
Command C:\Python34\python.exe -c "import setuptools, tokenize;__file__='C:\\Users\\CARTE_~1\\AppData\\Local\\Temp\\pip_build_carte_000\\lxml\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record C:\Users\CARTE_~1\AppData\Local\Temp\pip-l8vvrv9g-record\install-record.txt --single-version-externally-managed --compile failed with error code 1 in C:\Users\CARTE_~1\AppData\Local\Temp\pip_build_carte_000\lxml
Storing debug log for failure in C:\Users\carte_000\pip\pip.log

Alors j'ai regardé ce truc génial et utile appelé Internet et beaucoup de gens ont la même erreur d'avoir besoin de libxml2 et libxlst. Ils recommandent un gars appelé la page de Christoph Gohlke où il fournit une sorte de truc binaire pour un tas de paquets. Vous pouvez le trouver ici ( lien rapide vers la partie lxml ).

Donc, après avoir renoncé à essayer de trouver libxml2 et libxslt pour pip, j'ai décidé d'y aller et j'ai trouvé une tonne absolue de téléchargements. Je sais que j'en ai besoin d'un 64 bits, mais je ne sais pas de quel "cp" j'ai besoin.

Donc, une réponse me donnant une solution sur la méthode pip ou la méthode d'index de Gohlke serait formidable.

21
spelchekr

Tout d'abord, suite aux commentaires, j'ai téléchargé le lxml-3.4.2-cp34-none-win_AMD64.whl fichier et a essayé de l'ouvrir avec un pip install, mais il m'a juste dit que ce n'était pas un fichier de roue valide sur mon système ou quelque chose.

Ensuite, j'ai téléchargé le win_32 fichier et cela a fonctionné! C'est peut-être parce que j'ai un processeur Intel et AMD64 est, sans surprise, uniquement pour les processeurs AMD.

12
spelchekr

Ou vous pouvez aussi aller à Christoph's Gohlke's Python page puis télécharger le bon fichier lxml. (Généralement depuis que j'utilise python 3.4 et j'ai une fenêtre, je télécharge le lxml-3.4.4-cp34-none-win32.whl)

Accédez au dossier dans lequel il se trouve. Cliquez en arrière-plan (pour que rien ne soit sélectionné), puis appuyez sur le bouton gauche + droite en même temps et cliquez sur la fenêtre de commande ouverte. Tapez ensuite C:/Python34/Scripts/pip install "NOM DU FICHIER QUE VOUS AVEZ JUSTE TÉLÉCHARGÉ.whl"

Dans ce cas, ce serait C:/Python34/Scripts/pip install "lxml-3.4.4-cp34-none-win32.whl"

Appuyez maintenant sur Entrée. Cela a bien fonctionné pour moi, et après avoir tapé le devis, vous pouvez également appuyer sur tab et il devrait remplir le bon pour vous.

22
Kenny Truong

Ces instructions concernent Windows7 ou Windows8 avec Python3.4 .

Cependant , ils devraient fonctionner pour différentes versions car les versions de python et autres prérequis respectifs changent/évoluent:

  1. Installer Python3.4:
    1. Téléchargez la dernière version de Python3.4 à partir de la page des téléchargements ICI
      • Lien direct pour l'installateur Win32 MSI -> ICI
    2. Exécutez simplement le MSI pour installer python. Il s'enregistrera dans le registre et apparaîtra dans Ajout/Suppression de programmes.
    3. REMARQUE: mes instructions qui suivent supposent que vous choisissez d'installer python sur le chemin par défaut de C:\python34\ lorsqu'on lui a demandé au cours de l'assistant d'installation Python Installation
  2. Ajouter le C:\python33\ et C:\python34\scripts dossiers dans le chemin système en ajoutant ces répertoires à la variable d'environnement PATH à partir du Panneau de configuration> Système> Lien Paramètres système avancés (onglet Avancé)> Variables d'environnement (bouton ) .
  3. Installer OpenSSL:
    1. Téléchargez la page Win32 OpenSSL depuis ICI pour votre version de l'architecture Windows et PC
    2. Télécharger Redistributables Visual C++ 2008 pour votre version de l'architecture Windows et PC
    3. Téléchargez OpenSSL pour votre version de Windows et de l'architecture (la version régulière, pas la version légère)
    4. Ajouter le c:\openssl-win32\bin (ou similaire) dans votre PATH, de la même manière que vous avez ajouté C:\python34 et C:\python34\scripts au dessus de.
  4. Installer Setuptools (get-pip.py devrait installer Setuptools pour vous), mais au cas où ...
    1. Télécharger ez_setup.py ICI et enregistrez-le dans C:\python34\scripts
    2. Exécutez C:\python34\scripts> python ez_setup.py
  5. Installer [~ # ~] pip [~ # ~]
    1. Télécharger get-pip.py de [[# # ~] ici [~ # ~] et enregistrez-le dans C:\python34\scripts
    2. Exécutez C:\python34\scripts> python get-pip.py
  6. Installer [~ # ~] lxml [~ # ~]
    1. Télécharger LXML 3.4.4 de ICI pour votre version de l'architecture Windows et PC
    2. Exécutez le fichier EXE
2
Flak DiNenno

Je rencontre également ce problème récemment. pip ne peut pas ne pas fonctionner sur le fichier .whl. Au lieu de résoudre ce problème, je l'installe via le fichier .exe. vous pouvez le télécharger depuis ici . Veuillez choisir la bonne version de votre python. J'espère que cela peut vous aider.

2
Zik

On dirait qu'aujourd'hui en 2018, lxml peut être installé à partir de PyPI:

C:\Users\Administrator>"c:\Program Files\Python37\python.exe" -m pip install -U pip wheel setuptools
Collecting pip
  Downloading https://files.pythonhosted.org/packages/c2/d7/90f34cb0d83a6c5631cf71dfe64cc1054598c843a92b400e55675cc2ac37/pip-18.1-py2.py3-none-any.whl (1.3MB)
    100% |████████████████████████████████| 1.3MB 3.3MB/s
Collecting wheel
  Downloading https://files.pythonhosted.org/packages/5a/9b/6aebe9e2636d35d1a93772fa644c828303e1d5d124e8a88f156f42ac4b87/wheel-0.32.2-py2.py3-none-any.whl
Collecting setuptools
  Downloading https://files.pythonhosted.org/packages/96/06/c8ee69628191285ddddffb277bd5abdf769166e7a14b867c2a172f0175b1/setuptools-40.4.3-py2.py3-none-any.whl (569kB)
    100% |████████████████████████████████| 573kB 2.9MB/s
Installing collected packages: pip, wheel, setuptools
  Found existing installation: pip 10.0.1
    Uninstalling pip-10.0.1:
      Successfully uninstalled pip-10.0.1
  The script wheel.exe is installed in 'c:\Program Files\Python37\Scripts' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  Found existing installation: setuptools 39.0.1
    Uninstalling setuptools-39.0.1:
      Successfully uninstalled setuptools-39.0.1
Successfully installed pip-18.1 setuptools-40.4.3 wheel-0.32.2

C:\Users\Administrator>pip install lxml
Collecting lxml
  Downloading https://files.pythonhosted.org/packages/d7/9d/1aa28aa9d293a816baec6c37328d6465b722b2ff3f4d1e93ed56e87813ee/lxml-4.2.5-cp37-cp37m-win_AMD64.whl (3.6MB)
    100% |████████████████████████████████| 3.6MB 1.6MB/s
Installing collected packages: lxml
Successfully installed lxml-4.2.5

C:\Users\Administrator>python
Python 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 14:57:15) [MSC v.1915 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from io import BytesIO
>>> some_file_or_file_like_object = BytesIO(b"<root>data</root>")
>>> from lxml import etree
>>> tree = etree.parse(some_file_or_file_like_object)
>>> etree.tostring(tree)
b'<root>data</root>'
1
George Sovetov

J'ai eu ce problème avec un fichier d'exigences répertoriant lxml == 4.2.1. Cependant, j'ai pu résoudre le problème en le mettant à jour vers lxml == 4.2.5.

1
Roger Iyengar

Sur le site Web du distributeur, la commande correcte est:

pip install lxml==3.4.4

Bien sûr, mettez à jour le numéro de version pour qu'il corresponde à la dernière version.

Référence: https://pypi.org/project/lxml/3.4.4/

0
Eli