
Estoy intentando instalar un módulo de Python llamado lxml
a mi cuenta en una supercomputadora que ejecuta RHEL.
síNOtener acceso root o estado de superusuario.
lxml
requiere las versiones dev/devel de libxml2
y libxslt
, porque incluyen archivos de encabezado que lxml
deben compilarse. Pero la supercomputadora tiene las versiones que no son de desarrollo instaladas en sus /usr
directorios raíz, así que instalé las versiones de desarrollo en mi home
directorio 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
& libxslt
en 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
/ libxslt
que 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 lxml
desde el código fuente, siguiendo las instrucciones en el build.txt
documento 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/lib
en lugar de mis $HOME/user
directorios, etc.
¿Cómo soluciono esto?
Respuesta1
Asegúrese de que bin
los subdirectorios de ambos paquetes (libxml2/libxslt) estén en su archivo PATH
. Contienen *-config
scripts 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