Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Réparer un packet pip cassé lxml python27

+3 votes

Toujours la même erreur quand il s'agit de (ré)installer lxml, le packet pip a toujours une erreur de compil

$pip install lxml
force/build/lxml/src/lxml/includes/etree_defs.h:9:31: fatal error: 
libxml/xmlversion.h: No such file or directory

compilation terminated.

error: command 'gcc' failed with exit status 1

----------------------------------------

En general le problème se règle en installant les packets debian manquants suivant

$apt-get install libxml2-dev libxslt-dev

Ou tout simplement on l'installe via setuptools qui ne pose pas de problème

J'ai envie de contribuer et de proposer une réparation du packet pour le rendre accessible dans pip, comment je fais?

demandé 2-Avr-2015 par c24b

Il me semble qu'il faut la lib libpq-dev aussi pour qu'il puisse compiler correctement

1 Réponse

+4 votes

Le paquet n'est pas cassé, il a juste une dépendance à une extension en C qu'il doit compiler. Pour compiler cette extension en C, il faut un compilateur (ici GCC), qui va demander derrière les headers des fichiers C. Ces headers ne sont pas installés par défaut avec la lib, et il faut donc installer les paquets libxml2-dev libxslt-dev, sans quoi pas de compilation possible.

Il n'y a don rien à réparer.

La solution, c'est de fournir une version précompilée du packages, qui contiendra l'extension sous forme binaire. C'est ce que faisait les eggs, et c'est pourquoi ça marche avec easy_install. Avec pip, qui n'accepte plus les eggs, il faut faire un wheel, qui ne marche pas encore sous Linux. La résolution du problème est donc plus complexe qu'il n'y parait : il faut faire avancer le support des wheels sous Linux.

Je sais, ce n'est pas la réponse que tu voulais entendre :(

répondu 2-Avr-2015 par Sam (4,974 points)

@Sam qu'entends tu par "il faut faire un wheel, qui ne marche pas encore sour Linux"? Tu veux dire que creer des wheels sous Linux n'est pas possible, ou bien d'installer des wheels sous Linux n'est pas possible?

L'upload des wheels pour linux est désactivée sur Pypi car pour le moment on a pas trouvé de solution pour rendre un paquet compatible avec toutes les distributions.

...