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

sav*_*sav 34 python pip twisted virtualenv

我在安装扭曲时遇到问题

pip --version
Run Code Online (Sandbox Code Playgroud)

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

创建一个虚拟环境

chris@chris-mint ~/GL/GLBackend $ sudo virtualenv -p python2.7 glenv
Run Code Online (Sandbox Code Playgroud)

使用解释器运行virtualenv /usr/bin/python2.7 glenv/bin/python2.7中的新python可执行文件还在glenv/bin/python中创建可执行文件安装distribute ................ .................................................. .................................................. .................................................. .......................完成.安装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
Run Code Online (Sandbox Code Playgroud)

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

twisted在此处未列为已安装

(glenv)chris@chris-mint ~/GL/GLBackend $ sudo pip install twisted
Run Code Online (Sandbox Code Playgroud)

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

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

sudo pip install -I twisted
Run Code Online (Sandbox Code Playgroud)

下载/解压缩扭曲下载Twisted-12.3.0.tar.bz2(2.6Mb):2.6Mb下载运行setup.py egg_info for package twisted...

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

然而它仍然没有安装

(glenv)chris@chris-mint ~/GL/GLBackend $ pip freeze
Run Code Online (Sandbox Code Playgroud)

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

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

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

aba*_*ert 57

这里的问题是你在sudo不应该的时候使用.这导致pip尝试安装/usr/local/lib而不是~/glenv/lib.(而且,因为你使用过sudo,它成功地这样做了,但这对你没有帮助,因为你不允许在你的venv中使用系统站点包.)

sudo pip导致这种行为的原因有多种,但最有可能的是:在大多数系统上(包括我可以立即访问的各种Mac和RHEL/CentOS盒子),该sudoers文件将重置您的环境,然后加入少数几个列入白名单的环境变量.这意味着,当你sudo pip,它将看不到设置的环境变量virtualenv,因此它将回退到做默认的事情并安装到你的系统Python中,而不是你的venv.

但实际上,为什么会发生这种情况并不重要.答案是一样的:只是做pip install而不是sudo pip install.

请注意,您想删除sudovirtualenv通话,因为这很可能导致VENV被错误地设置了(这就是为什么你需要的sudo chmod,这不会是必要的,否则).在用户主目录下安装内容的重点是,您可以使用普通用户权限进行安装.

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

  • 如果我想在`/ opt`文件夹中安装我的`virtualenv`怎么样?我收到了"Permission Denied"错误. (3认同)