2014-10-14 5 views
5

sudo pip install lxml와 VIRTUALENV 내 LXML를 설치하려고도 sudo pip install --upgrade lxml을하지만 두 경우 모두 다음 점점 python2.7에 LXML를 설치할 수 없습니다 : 나는 모든 게시 된 솔루션 here을 시도

x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z, 
relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes  
-D_FORTIFY_SOURCE=2 -g -fstack-protector --param=ssp-buffer-size=4 -Wformat 
-Werror=format-security build/temp.linux-x86_64-2.7/src/lxml/lxml.etree.o -lxslt 
-lexslt -lxml2 -lz -lm -o build/lib.linux-x86_64-2.7/lxml/etree.so 

/usr/bin/ld: cannot find -lz 

collect2: error: ld returned 1 exit status 
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 

---------------------------------------- 
Cleaning up... 
Command /usr/bin/python -c "import setuptools, 
tokenize;__file__='/tmp/pip_build_root/lxml/setup.py'; 
exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), 
__file__, 'exec'))" install --record /tmp/pip-nmFOYf-record/install-record.txt 
--single-version-externally-managed --compile failed with error code 1 in 
/tmp/pip_build_root/lxml 
Storing debug log for failure in /root/.pip/pip.log 

을하는 libxml2-dev, libxslt-devpython-dev이 설치되어 있고 또한 설치되었음을 의미합니다. build-essential
현재 패키지 관리자로 apt-get을 사용하는 Linux Mint 17 Debian Based를 실행하고 있습니다.
python-lxml 이미 사전 설치되었습니다.

+1

을 당신이 VIRTUALENV 내에서'sudo'를 사용하는 이유는 무엇입니까? root로 virtualenv를 만들었습니까? 그렇다면 왜? 아니면 virtualenv 내부에 있더라도 시스템 사이트 패키지에 설치하려고합니까? 그렇다면 왜 virtualenv 밖에서하지 않습니까? – abarnert

+0

@abarnert 글쎄, 내가 sudo없이 처음 만들었다면, 전 세계적으로 lxml 설치를 시도했지만 작동하지 않았다. – helado

+0

sudo를 사용하거나 사용하지 않고 virtualenv와 전역 설치를 무작위로 섞어서 사용하면 망가진 권한으로 깨진 virtualenv로 이어집니다. 그러지 마. – abarnert

답변

7

lxml 다양한 C 라이브러리에 따라, 당신은 그 C 라이브러리가 설치-포함한 개발 파일이 있어야 (등 헤더, .so 또는 .a 라이브러리.) - lxml을 구축 할 수 있습니다. installation 문서는 특정 플랫폼에서 구축해야하는 필수 구성 요소를 설명합니다.


이 오류는 : 당신이 놓치고있는 전제 조건은 일명, zliblibz 것을

/usr/bin/ld: cannot find -lz 

... 의미한다.

Windows가 아니기 때문에 실제로는 zlib이 전혀 없을 것 같지 않지만 ... zlib에 대한 개발 파일이 없다는 것은 꽤 그럴듯합니다. 일부 플랫폼에서, 특히 리눅스 배포판이 많지만 패키지는 일반적으로 별도의 조각으로 나뉩니다. 예를 들어 런타임에 필요한 zlib의 부분은 zlib이라는 패키지에 포함될 수 있으며 zlib이라는 패키지에 zlib-dev 또는 zlib-devel이라는 패키지가 필요한 다른 프로그램을 빌드하는 데 필요한 부분을 필요로합니다. 정확한 세부 정보는 정확한 플랫폼에 따라 다릅니다.

당신이 zlib 개발 파일이없는 경우 내가 그 뽑아하지 않았을 설치하는 모든 플랫폼의 모르기 때문에, 당신은 아마, 어느 libxml2 또는 libxslt 개발 파일이없는 말했다되고 그건 zlib 파일에도 있습니다.

어쨌든, 당신이 어떤 플랫폼 (그리고 리눅스의 경우 배포판)인지 알려주지 않았기 때문에 나는 어떤 패키지 관리자를 사용할 지, 패키지 이름은 무엇인지 등을 모르지만 당신의 플랫폼에 맞는 것을하십시오. 또한


:

I already have python-lxml installed

당신은 정말 두 배포판의 패키지 관리자와 pip과 같은 패키지를 설치하지 말아야

; 그것은 자신을 혼란스럽게하는 좋은 방법입니다.

하지만 어떤 경우에도 소스가 아닌 이진 패키지에서 python-lxml을 설치했을 가능성이 높으므로 빌드 요구 사항이 필요하지 않습니다. 이제는 소스에서 빌드하려고 시도하고 있습니다.우분투 기반 리눅스 배포판에

+0

초기 답변을 주셔서 감사합니다. 핏과 패키지 관리자 (둘다'apt-get')를 모두 설치하려고 한 이유는 첫 번째 (pip) 나에게 도움이되지 않았으므로,'python-lxml'을 설치하려고 시도했지만 __preinstalled__였습니다. 또한'lxml'을 설치하기 전에'libxml2'와'libxslt'을 설치했습니다. – helado

+0

@helado : 그러나 설치 문서와이 대답 모두에 설명되어 있듯이'libxml2-dev'와'libxslt-dev'를 설치 했습니까? – abarnert

+0

만약'sudo apt-get install libxml2-dev libxslt-dev python-dev'을 워드 프로세서가 말하는 것처럼 만든다면, 나는 그것을 그렇게했다. – helado

3

당신은 사용할 수 있습니다

sudo apt-get install zlib1g-dev

+1

나는 똑같은 문제에 직면했다. 이 명령은 문제를 해결했습니다. @helado와 kguest에게 감사드립니다. – Mohammed