Problemas al instalar lxml con una ubicación de instalación personalizada para libxml2/libxslt

Problemas al instalar lxml con una ubicación de instalación personalizada para libxml2/libxslt

Estoy intentando instalar un módulo de Python llamado lxmla mi cuenta en una supercomputadora que ejecuta RHEL.

NOtener acceso root o estado de superusuario.

lxmlrequiere las versiones dev/devel de libxml2y libxslt, porque incluyen archivos de encabezado que lxmldeben compilarse. Pero la supercomputadora tiene las versiones que no son de desarrollo instaladas en sus /usrdirectorios raíz, así que instalé las versiones de desarrollo en mi homedirectorio compilándolas desde el código fuente.

Ambos se construyeron sin problemas sin generar ningún error y todos los archivos de encabezado necesarios están en formato $HOME/usr/local/include/libxml2/libxml, etc.

Sin embargo, cada vez que lo intento pip install lxml, intenta usar no dev libxml2& libxslten la raíz /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.)

Y hay varias docenas de líneas más que dicen que los paquetes de desarrollo no están instalados correctamente, ya que están buscando los incorrectos.

¿Cómo consigo que el sistema utilice las versiones de libxml2/ libxsltque instalé?

Incluso obtengo mis directorios $HOME/bin, $HOME/usr, etc. primero en .cshrc.

Sólo para asegurarme de cubrir todas mis bases, también intenté compilar lxmldesde el código fuente, siguiendo las instrucciones en el build.txtdocumento incluido en el paquete fuente:

[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

Básicamente, tengo el mismo problema al mirar /user/local/liben lugar de mis $HOME/userdirectorios, etc.

¿Cómo soluciono esto?

Respuesta1

Asegúrese de que binlos subdirectorios de ambos paquetes (libxml2/libxslt) estén en su archivo PATH. Contienen *-configscripts que se utilizan durante la compilación de lxml para averiguar dónde se instaló libxml2/libxslt.

[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

información relacionada