为什么我不能让`pip install lxml`在virtualenv中工作?

时间:2012-10-22 21:11:10

标签: python virtualenv virtualenvwrapper

注意:我正在使用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

4 个答案:

答案 0 :(得分:122)

您的系统上可能已经安装了lxml,可能是由于系统软件包而安装的。因此,第一次尝试(pip install lxml没有活动的virtualenv)不会失败,但它也不会安装它;它真的没有做任何事情。

在virtualenv中,默认情况下会忽略系统包。因此,pip认为没有安装lxml。因此,它会尝试将其安装到您的虚拟环境中。

lxml包含需要编译才能正确安装的C模块。但是,这些C模块的编译依赖于您已经安装了一些“开发库”。这些开发库是C库,而不是Python,因此pip将无法从Internet自动获取它们并为您安装它们。

因此,您需要自己安装这些开发库,最有可能使用您的软件包管理器。在Debian系统(如Ubuntu)中,这是......

apt-get install libxml2-dev libxslt-dev

这会将libxml2和libxslt开发库安装到本地系统。如果再次尝试安装lxml,C模块编译步骤应该可以正常工作,因为现在这些开发库都在您的系统上。

您收到的错误消息是由于缺少这些库(错误消息的libxml/xmlversion.h: No such file or directory部分)。

另请参阅:How to install lxml on Ubuntu

答案 1 :(得分:18)

对于centos用户

得到时:

  

错误:命令'gcc'因退出状态1而失败

DO:

sudo yum install libxslt-devel libxml2-devel

答案 2 :(得分:5)

如果您在系统级安装了lxml,并希望将其迁移到未使用virtualenv创建的--system-site-packages,则可以将其符号链接到您的virtualenv 1}}的{​​{1}}文件夹。

dist-packages之外,在python shell中:

virtualenv

就我而言,它位于import lxml print lxml.__file__ 。将有一个lxml文件夹和egg-info文件。无论你的virtualenv在哪里,进入它的/usr/lib/python2.7/dist-packages文件夹(你可能需要创建/lib/python-x.y/dist-packages),并将库文件夹和egg符号链接到其中。

答案 3 :(得分:-1)

您最有可能在寻找以下内容: Microsoft Visual C++ 14.0 is required (Unable to find vcvarsall.bat)

查找Visual Studio网站并进入: 单击底部的“ Visual Studio工具”,将其展开。 选择顶部“ Visual Studio 2017的生成工具”旁边的下载。