Probleme bei der Installation von lxml mit benutzerdefiniertem Installationsort für libxml2/libxslt

Probleme bei der Installation von lxml mit benutzerdefiniertem Installationsort für libxml2/libxslt

Ich versuche, ein Python-Modul namens „ lxmlMein Konto“ auf einem Supercomputer mit RHEL zu installieren.

Ich tueNICHTüber Root-Zugriff oder Superuser-Status verfügen.

lxmlerfordert die Entwicklungs-/Entwicklungsversionen von libxml2und libxslt, da diese Header-Dateien enthalten, die lxmlerstellt werden müssen. Der Supercomputer hat jedoch die Nicht-Entwicklungsversionen in seinen Stammverzeichnissen installiert /usr, daher habe ich die Entwicklungsversionen in meinem homeVerzeichnis installiert, indem ich sie aus dem Quellcode erstellt habe.

Beide wurden reibungslos und ohne Fehler erstellt und alle notwendigen Header-Dateien befinden sich in $HOME/usr/local/include/libxml2/libxmlusw.

Allerdings versucht es jedes Mal , das nicht-dev. & im Stammverzeichnis pip install lxmlzu verwenden :libxml2libxslt/bin

[myusername@q0144 ~]$ pip install --install-option="--prefix=$HOME/python_modules" lxml
... (some unimportant messages) ...
Building against libxml2/libxslt in the following directory: /usr/local/lib
building 'lxml.etree' extension
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/include -I/usr/local/include/libxml2 -I/tmp/pip_build_myusername/lxml/src/lxml/includes -I/N/soft/rhel6/python/2.7.3/include/python2.7 -c src/lxml/lxml.etree.c -o build/temp.linux-x86_64-2.7/src/lxml/lxml.etree.o -w
In file included from src/lxml/lxml.etree.c:346:
/tmp/pip_build_myusername/lxml/src/lxml/includes/etree_defs.h:9:31: error: libxml/xmlversion.h: No such file or directory
/tmp/pip_build_myusername/lxml/src/lxml/includes/etree_defs.h:11:4: error: #error the development package of libxml2 (header files etc.) is not installed correctly
...(many more lines saying that the headers are missing, etc.)

Und es gibt mehrere Dutzend weitere Zeilen, die besagen, dass die Entwicklungspakete nicht richtig installiert sind, da die falschen angezeigt werden.

Wie bringe ich das System dazu, die von mir installierten Versionen von libxml2/ zu verwenden?libxslt

Ich gebe für meine Verzeichnisse $HOME/bin, $HOME/usr, usw. sogar zuerst .cshrc.

Um sicherzugehen, dass ich alle Voraussetzungen erfüllte, habe ich auch versucht, die Datei lxmlaus dem Quellcode zu erstellen. Dabei habe ich die Anweisungen im build.txtDokument befolgt, das im Quell-Tarball enthalten ist:

[myusername@q0144 lxml-3.3.5]$ python setup.py build_ext -i -I $HOME/usr/include/libxml2/libxml --without-cython --with-xslt-config=$HOME/usr/local/bin/xslt-config
Building lxml version 3.3.5.
Building without Cython.
Using build configuration of libxslt 1.1.28
Building against libxml2/libxslt in the following directory: /usr/local/lib
/N/soft/rhel6/python/2.7.3/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'bugtrack_url'
warnings.warn(msg)
running build_ext
building 'lxml.etree' extension
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/include -I/usr/include/libxml2 -I/N/hd00/myusername/Quarry/python_modules/lxml-3.3.5/src/lxml/includes -I/N/u/myusername/Quarry/usr/include/libxml2/libxml -I/N/soft/rhel6/python/2.7.3/include/python2.7 -c src/lxml/lxml.etree.c -o build/temp.linux-x86_64-2.7/src/lxml/lxml.etree.o -w
In file included from src/lxml/lxml.etree.c:346:0:
/N/hd00/rccaton/Quarry/python_modules/lxml-3.3.5/src/lxml/includes/etree_defs.h:
13:32: fatal error: libxslt/xsltconfig.h: No such file or directory
compilation terminated.
error: command 'gcc' failed with exit status 1

Ich habe also grundsätzlich das gleiche Problem, wenn es sich die Verzeichnisse „+“ /user/local/libund nicht „+“ ansieht .$HOME/user

Wie kann ich das umgehen?

Antwort1

Stellen Sie sicher, dass binsich Unterverzeichnisse beider Pakete (libxml2/libxslt) auf Ihrem befinden PATH. Sie enthalten *-configSkripte, die während der Kompilierung von lxml verwendet werden, um herauszufinden, wo libxml2/libxslt installiert wurden.

[pdobrogost@host /]$ echo $PATH
(...):/opt/libxslt-1.1.27/bin:/opt/libxml2-2.6.32/bin:(...)
[pdobrogost@host /]$ which xml2-config && which xslt-config
/opt/libxml2-2.6.32/bin/xml2-config
/opt/libxslt-1.1.27/bin/xslt-config

verwandte Informationen