2013-01-25 3 views
3

필자는 내 서버에 Centos 6을 가지고 있으며, 몇 가지 패키지 (모듈)를 설치하려고 시도 해왔다. 난 그냥 /usr/lib/python2.6/site-packages에서 FTP 클라이언트 내 창문에 사람을 가져왔다,하지만 난 내 스크립트 중 하나를 실행할 때 - lxml이 나에게 오류 제공 :CentOS 6.3의 Python lxml etree

동일한 코드는 Windows에서 완벽하게 작동
File "plugins/util/http.py", line 12, in <module> 
    from lxml import etree, html 
    File "/usr/lib/python2.6/site-packages/lxml/html/__init__.py", line 12, in <module> 
ImportError: cannot import name etree 

7 & 리눅스 우분투 10.04를 .

왜이 오류를 반환하는지 누가 알 수 있습니까? 나는 아무것도 수정하지 않고, 윈도우에서 모듈을 내 vps의 python2.6 디렉토리로 옮겼다.

@root :

>>> import lxml;print lxml 
<module 'lxml' from '/usr/lib/python2.6/site-packages/lxml/__init__.pyc'> 
>>> 

@ig

gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/libxml2 -I/tmp/pip-build/lxml/src/lxml/includes -I/usr/include/python2.6 -c src/lxml/lxml.etree.c -o build/temp.linux-i686-2.6/src/lxml/lxml.etree.o

GCC를 실행하지 못할 :

오류 해당 파일이나 디렉토리 : 명령 'GCC'종료 상태로 실패를 1

+0

'수입 LXML을 무엇; print lxml' print? – root

+0

@root, 내 첫 번째 게시물을 편집했습니다. – RewriteRule

+0

인터프리터에서 etree를 가져올 때 동일한 오류가 발생합니까? 또는 interpeter에서 사용한 것과 같은 행을 스크립트 시작 부분에 추가하면 동일한 결과가 인쇄됩니까? – root

답변

1

lxml은 순수한 Python 모듈이 아닙니다. 대부분 Cython로 작성되었으므로 원시 코드로 컴파일됩니다. Windows 컴퓨터의 바이너리 파일은 CentOS (및 일반적으로 Linux)와 호환되지 않습니다.

가장 좋은 건, 지침 on installing lxml에 따라, 즉 libxslt-devellibxml2-devel 패키지를 설치하고 자신을 lxml를 컴파일하거나 수동으로 컴파일 pip을 사용하는 것입니다. 직접 컴파일하는 경우 there's a previous question과 유용한 정보가 있으며 lxml 사이트에 대한 추가 정보가 있습니다.


설치

나는이에 대한 테스트하기 위해 CentOS는 기계가 없습니다. 가장 쉬운 설치 방법은 yum을 통해 패키지로 제공되어야하는 ip를 통한 방법입니다. 그렇지 않다면, 당신이 다음 명령을 사용하여 설치할 수 있습니다 (distribute의 설명서에서를, PIP위한 전제 조건) :

pip install lxml 

그리고 설치해야합니다 거기에서

curl -O http://python-distribute.org/distribute_setup.py 
python distribute_setup.py 
easy_install pip 

, 그냥 실행 벌금.

당신이 핍 (하지만, 궁극적으로, 핍이하고 그래서 그것의 가치, 관리가 훨씬 쉬워 종속성한다)

  1. PyPI
  2. 에 LXML의 해당 버전을 찾습니다에서 소스를 다운로드를 건너 뛰려면 다운로드 URL은
  3. 이 추출 된 디렉토리에 tar -xzf lxml-<version>.tar.gz
  4. cd를 사용하여 tar 아카이브를 추출하고 python setup.py install를 실행 (A tar.gz 파일이어야한다)

설치가 root 만 수정할 수있는 경우 위 명령 중 하나라도 root로 실행해야 할 수도 있습니다. 설치 명령은 python distribute_setup.py, easy_install pippython setup.py install입니다.

+0

"패키지 libxml2-devel-2.7.6-8.el6_3.4.i686이 이미 설치되어 있고 최신 버전"libxslt-devel-1.1.26-2.el6_3.1.i686 패키지가 이미 설치되어 있고 최신 버전입니다. " 지금해야 할 일은 핍 또는 나 자신을 사용하여 컴파일하는 것입니다. 당신은 나 자신을 컴파일하는 법을 말해 줄 수 있겠 어. 그런 것들을 다룰 필요는 없었어. – RewriteRule

+0

@RewriteRule : 위의 편집을 참조하십시오. – ig0774

+0

정보를 주셔서 감사합니다. 조금 더 간단 해 보였으므로 pip로 끝냈습니다. 나는 아직도 약간의 오류가있다. 내 의견이 너무 길어서 첫 번째 게시물을 편집했습니다. 설치가 거의 완료되었다고 생각합니다. 어떻게해야하는지 모든 것을 다했습니다. – RewriteRule

6

또는 EPEL (가장 쉬운 방법)에서 설치 :

# install EPEL if you don't have it yet 
sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 
# instal python-lxml 
sudo yum -y install python-lxml