developer tip

virtualenv에서 작동하도록`pip install lxml`을 얻을 수없는 이유는 무엇입니까?

optionbox 2020. 11. 4. 07:54
반응형

virtualenv에서 작동하도록`pip install lxml`을 얻을 수없는 이유는 무엇입니까?


참고 : virtualenvwrapper를 사용하고 있습니다.

가상 환경을 활성화하기 전에 :

$ pip install lxml
Requirement already satisfied (use --upgrade to upgrade): lxml in /usr/lib/python2.7/dist-packages  
Cleaning up...  

가상 환경을 활성화 한 후 :

(test-env)$ pip install lxml
force/build/lxml/src/lxml/includes/etree_defs.h:9:31: fatal error: 
libxml/xmlversion.h: No such file or directory

compilation terminated.

error: command 'gcc' failed with exit status 1

----------------------------------------
Command /home/chaz/dev/envs/test-with-system-python-force/bin/python2
.7 -c "import setuptools;__file__='/home/chaz/dev/envs/test-with-
system-python-force/build/lxml/setup.py';exec(compile(open(__file__).
read().replace('\r\n', '\n'), __file__, 'exec'))" install --record 
/tmp/pip-bJ6Q_B-record/install-record.txt --single-version-externally
-managed --install-headers /home/chaz/dev/envs/test-env/include/site/python2.7 failed with error code 1 in 
/home/chaz/dev/envs/test-env/build/lxml
Storing complete log in /home/chaz/.pip/pip.log

시스템 패키지로 인해 이미 시스템에 lxml이 설치되어있을 수 있습니다. 따라서 첫 번째 시도 ( pip install lxml활성 virtualenv없이)는 실패하지 않지만 설치하지도 않습니다. 정말 아무것도하지 않습니다.

virtualenv에서 기본적으로 시스템 패키지는 무시됩니다. 따라서 pip는 lxml이 설치되어 있지 않다고 생각합니다. 따라서 가상 환경에 설치를 시도합니다.

lxml에는 제대로 설치하기 위해 컴파일해야하는 C 모듈이 포함되어 있습니다. 그러나 이러한 C 모듈의 컴파일은 일부 "개발 라이브러리"도 이미 설치되어 있어야합니다. 이러한 개발 라이브러리는 Python이 아닌 C 라이브러리이므로 pip는 인터넷에서 자동으로 가져 와서 설치할 수 없습니다.

따라서 패키지 관리자를 사용하여 이러한 개발 라이브러리를 직접 설치해야합니다. 데비안 시스템 (예 : Ubuntu)에서 이것은 ...

apt-get install libxml2-dev libxslt-dev

그러면 libxml2 및 libxslt 개발 라이브러리가 로컬 시스템에 설치됩니다. lxml을 다시 설치하려고하면 이제 이러한 개발 라이브러리가 시스템에 있으므로 C 모듈 컴파일 단계가 작동합니다.

수신 한 오류 메시지는 이러한 라이브러리가 누락 되었기 때문입니다 ( libxml/xmlversion.h: No such file or directory오류 메시지 일부).

참고 항목 : Ubuntu에 lxml을 설치하는 방법


centos 사용자 : 다음 을 얻을 때 :

오류 : 'gcc'명령이 종료 상태 1로 실패했습니다.

하다:

sudo yum install libxslt-devel libxml2-devel

이 경우 lxml시스템 레벨에서 설치 및로 마이그레이션하려는 virtualenv당신이 만들지 않은 것을 --system-site-packages, 당신은 당신으로 심볼릭 링크 수 virtualenvdist-packages폴더.

당신의 외부 virtualenv, 파이썬 쉘 :

import lxml
print lxml.__file__

제 경우에는 /usr/lib/python2.7/dist-packages. lxml 폴더와 egg-info 파일이 있습니다. virtualenv가 어디에 있든 해당 /lib/python-x.y/dist-packages폴더 로 이동하고 (을 만들어야 할 수 있음 dist-packages) 라이브러리 폴더와 egg를 모두 심볼릭 링크합니다.


다음을 찾고있을 가능성이 높습니다. Microsoft Visual C ++ 14.0이 필요합니다 (vcvarsall.bat를 찾을 수 없음).

Visual Studio 웹 사이트를 찾아 하단의 "Tools for Visual Studio"로 이동하여 클릭하여 확장합니다. 상단의 "Visual Studio 2017 용 빌드 도구"옆에있는 다운로드를 선택합니다.

참고 URL : https://stackoverflow.com/questions/13019942/why-cant-i-get-pip-install-lxml-to-work-within-a-virtualenv

반응형