未使用pip在virtualenv中安装Python包

未使用pip在virtualenv中安装Python包,python,twisted,virtualenv,pip,Python,Twisted,Virtualenv,Pip,安装twisted时遇到问题 pip --version (glenv)chris@chris-mint ~/GL/GLBackend $ sudo pip install twisted (glenv)chris@chris-mint ~/GL/GLBackend $ pip freeze PIP1.1来自 /home/chris/GL/GLBackend/glenv/lib/python2.7/site-packages/pip-1.1-py2.7.egg (python 2.7) 创

安装twisted时遇到问题

pip --version
(glenv)chris@chris-mint ~/GL/GLBackend $ sudo pip install twisted
(glenv)chris@chris-mint ~/GL/GLBackend $ pip freeze
PIP1.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
使用解释器/usr/bin/python2.7运行virtualenv新python glenv/bin/python2.7中的可执行文件,也在 glenv/bin/python安装 分发已完成的内容。 安装管道…………完成

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

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未在此处列出为已安装的

pip --version
(glenv)chris@chris-mint ~/GL/GLBackend $ sudo pip install twisted
(glenv)chris@chris-mint ~/GL/GLBackend $ pip freeze
已满足要求(使用--upgrade to upgrade):拧入 /已满足usr/local/lib/python2.7/dist-packages要求 (使用--upgrade to upgrade):zope.interface>=3.6.0英寸 /usr/local/lib/python2.7/dist-packages(来自twisted)要求 已满足(使用--upgrade to upgrade):在中分发 /usr/local/lib/python2.7/dist-packages(来自 zope.interface>=3.6.0->twisted)正在清理。。。(格伦夫)chris@chris-造币厂 ~/GL/GLBackend$pip uninstall twisted无法卸载要求 扭曲,未安装存储完整登录 /home/chris/.pip/pip.log

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

sudo pip install -I twisted
下载/解包twisted下载twisted-12.3.0.tar.bz2 (2.6Mb):2.6Mb下载的运行setup.py egg_包信息 扭曲的 . . .

已成功安装twisted zope.interface 向上

但它仍然没有安装

pip --version
(glenv)chris@chris-mint ~/GL/GLBackend $ sudo pip install twisted
(glenv)chris@chris-mint ~/GL/GLBackend $ pip freeze
argparse==1.2.1 distribute==0.6.24 wsgiref==0.1.2

**当我尝试运行使用twisted的Python脚本时,我得到一个错误,说twisted没有安装。即:

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


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

有多种原因导致这种行为,但最有可能的是:在大多数系统(包括我可以立即访问的各种Mac和RHEL/CentOS设备)上,
sudoers
文件将重置您的环境,然后重新添加少量白名单环境变量。这意味着当您
sudopip
时,它将看不到
virtualenv
设置的环境变量,因此它将返回到执行默认操作并安装到系统Python中,而不是安装到venv中

但事实上,为什么会这样并不重要。答案是一样的:只需执行
pip安装
,而不是
sudopip安装

请注意,您还需要删除
virtualenv
调用上的
sudo
,因为这可能会导致venv设置不正确(这就是为什么您需要
sudo chmod
,否则就不需要)。在用户主目录下安装东西的全部意义在于,您可以使用正常的用户权限进行安装


另外,您可能还需要升级到更新的
virtualenv
/
pip
,因为1.8和1.2有一些错误修复和改进。但我已经证实,即使是最新的(1.8.4和1.2.1)版本,我也会遇到与您完全相同的问题,因此我认为这与此无关。

为什么您要在
virtualenv
下使用
sudo
pip install
?我不确定当你使用
sudo
时,
pip
是否会尝试安装到系统中(也就是说,正如你所看到的,它仍然是
/usr/local/lib/python2.7
,而不是你想要的
~/glenv
),但这至少是合理的。(你也不应该首先使用
sudo
来创建你的venv。)@abarnert已经回答了你,你似乎遇到了同样的问题,如果我想在
/opt
文件夹中安装我的
virtualenv
?我收到一个
权限被拒绝的
错误。@Giri:您可以使用sudo创建一个子目录,授予您的用户或组权限,然后在没有sudo的情况下执行所有virtualenv操作。如果是普通用户,您可能更喜欢使用他们的homedir。