Python包没有使用pip在virtualenv中安装

时间:2013-02-04 20:43:37

标签: python twisted virtualenv pip

我在安装twis​​ted

时遇到了问题
pip --version
  

来自的pip 1.1   /home/chris/GL/GLBackend/glenv/lib/python2.7/site-packages/pip-1.1-py2.7.egg   (python 2.7)

创建虚拟环境

chris@chris-mint ~/GL/GLBackend $ sudo virtualenv -p python2.7 glenv
  

使用解释器运行virtualenv /usr/bin/python2.7新的python   glenv / bin / python2.7中的可执行文件也在   glenv / bin / python安装   分发................................................. .................................................. .................................................. ........................................完成。   安装pip ...............完成。

以防万一,我将启用所有权限

chris@chris-mint ~/GL/GLBackend $ sudo chmod -R 777 glenv

chris@chris-mint ~/GL/GLBackend $ source glenv/bin/activate


(glenv)chris@chris-mint ~/GL/GLBackend $ pip freeze
  

argparse == 1.2.1 distribute == 0.6.24 wsgiref == 0.1.2

twisted在此处未列为已安装

(glenv)chris@chris-mint ~/GL/GLBackend $ sudo pip install twisted
  

要求已经满足(使用--upgrade升级):拧入   /usr/local/lib/python2.7/dist-packages要求已经满足   (使用--upgrade升级):zope.interface> = 3.6.0 in   /usr/local/lib/python2.7/dist-packages(来自扭曲)要求   已经满意(使用--upgrade升级):分发   /usr/local/lib/python2.7/dist-packages(来自   zope.interface> = 3.6.0-> twisted)清理......(glenv)chris @ chris-mint   〜/ GL / GLBackend $ pip uninstall twisted无法卸载要求   twisted,not installed存储完整登录   /home/chris/.pip/pip.log

但是当我安装它时它说它已经安装好了。 强制安装:

sudo pip install -I twisted
  

下载/拆包扭曲下载Twisted-12.3.0.tar.bz2   (2.6Mb):2.6Mb下载运行setup.py egg_info包   扭曲        。 。

     

成功安装twis​​ted zope.interface分配清理   向上...

然而它仍未安装

(glenv)chris@chris-mint ~/GL/GLBackend $ pip freeze
  

argparse == 1.2.1 distribute == 0.6.24 wsgiref == 0.1.2

**当我尝试运行使用twisted的Python脚本时,我收到一条错误消息,指出未安装twis​​ted。那就是:

  

ImportError:没有名为twisted.python的模块**

1 个答案:

答案 0 :(得分:57)

这里的问题是你不应该使用sudo。这导致pip尝试安装到/usr/local/lib而不是~/glenv/lib。 (并且,因为您使用了sudo,所以它已成功完成,但这对您没有帮助,因为您不允许在您的venv中使用系统站点包。)

sudo pip导致此行为的原因有多种,但最有可能的原因是:在大多数系统上(包括我可以立即访问的各种Mac和RHEL / CentOS框),{{1} } file将重置您的环境,然后添加回一些列入白名单的环境变量。这意味着,当您sudoers时,它将看不到sudo pip设置的环境变量,因此它将回退到执行默认操作并安装到您的系统Python中,而不是您的venv。 / p>

但实际上,为什么发生这种情况并不重要。答案是一样的:只需virtualenv代替pip install

请注意,您想要删除sudo pip install调用上的sudo,因为这可能会导致venv设置不正确(这就是您需要的原因) virtualenv,否则就没有必要了)。在用户主目录下安装内容的重点是,您可以使用普通用户权限进行安装。

作为旁注,您还可能希望升级到较新的sudo chmod / virtualenv,因为1.8和1.2有一些错误修复和改进。但我确认即使使用最新的(1.8.4和1.2.1)版本,我也会遇到完全相同的问题,因此我认为这与此无关。