lxml
RHEL을 실행하는 슈퍼컴퓨터에 내 계정을 호출하는 Python 모듈을 설치하려고 합니다.
그래요아니요루트 액세스 권한 또는 수퍼유저 상태가 있어야 합니다.
lxml
libxml2
및 의 dev/devel 버전에는 libxslt
빌드해야 하는 헤더 파일이 포함되어 있으므로 필요합니다. 하지만 슈퍼컴퓨터에는 루트 디렉터리에 개발 버전이 아닌 버전이 설치되어 있으므로 lxml
소스에서 빌드하여 /usr
개발 버전을 내 디렉터리에 설치했습니다 .home
둘 다 원활하게 빌드되고 오류가 발생하지 않으며 필요한 모든 헤더 파일이 $HOME/usr/local/include/libxml2/libxml
기다리고 있습니다.
그러나 시도할 때마다 루트 디렉토리에서 pip install lxml
dev가 아닌 libxml2
&를 사용하려고 시도합니다.libxslt
/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.)
개발 패키지가 잘못된 패키지를 찾고 있었기 때문에 올바르게 설치되지 않았음을 나타내는 수십 줄도 있습니다.
libxml2
설치된 /version을 시스템에서 사용하려면 어떻게 해야 합니까 ?libxslt
나는 심지어 $HOME/bin
처음 $HOME/usr
에 있었다 .cshrc
.
모든 기반이 포함되었는지 확인하기 위해 소스 tarball에 포함된 문서 lxml
의 지침에 따라 소스에서 빌드를 시도했습니다.build.txt
[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
그래서 기본적으로 etc 디렉토리 /user/local/lib
가 아닌 동일한 문제가 발생했습니다 .$HOME/user
이 문제를 어떻게 해결할 수 있나요?
답변1
bin
두 패키지(libxml2/libxslt)의 하위 디렉터리가 사용자의 디렉터리에 있는지 확인하세요 PATH
. 여기에는 *-config
libxml2/libxslt가 설치된 위치를 찾기 위해 lxml을 컴파일하는 동안 사용되는 스크립트가 포함되어 있습니다.
[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