35

我在安装 twisted 时遇到问题

pip --version

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

创建虚拟环境

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

使用解释器 /usr/bin/python2.7 运行 virtualenv 在 glenv/bin/python2.7 中新的 python 可执行文件还在 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 分发==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 (来自twisted) 要求已经满足(使用--upgrade 升级):分发在/usr/local/lib/python2.7/dist-packages (来自zope.interface >=3.6.0->twisted) 清理... (glenv)chris@chris-mint ~/GL/GLBackend $ pip uninstall twisted 无法卸载要求 twisted,未安装 存储完整登录 /home/chris/.pip/点子日志

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

sudo pip install -I twisted

下载/解压twisted 下载Twisted-12.3.0.tar.bz2 (2.6Mb):下载2.6Mb 运行setup.py egg_info 以获取twisted 包。. .

成功安装了twisted zope.interface 分发清理...

然而它仍然没有安装

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

argparse==1.2.1 分发==0.6.24 wsgiref==0.1.2

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

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

4

2 回答 2

59

这里的问题是你在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.

请注意,您还想sudo在通话中删除virtualenv,因为这可能会导致 venv 设置不正确(这就是您需要 的原因sudo chmod,否则就没有必要了)。在您的用户主目录下安装东西的全部意义在于您可以使用您的普通用户权限来完成。

附带说明一下,您可能还想升级到更新的virtualenv/ pip,因为 1.8 和 1.2 有一些错误修复和改进。但我证实,即使使用最新的(1.8.4 和 1.2.1)版本,我也会遇到与您完全相同的问题,所以我认为这与这里无关。

于 2013-02-04T20:58:11.620 回答
0

sudo pip是造成问题的原因。它会将软件包安装在您的系统中,而不是您创建的虚拟环境中。因此,当它说要求已经满足时。尝试添加它指向的目录。在您尝试安装时,您的情况是/usr/local/lib/python2.7/dist-packages

如果它在类似的东西里面/usr/local/lib/...,它不指向你的 virtualenv 文件夹,那么它就会安装在你的系统中。否则,在正确的情况下,它看起来像这样/usr/local/lib/..../<name of your virtualenv>/lib

您始终可以使用which python&之类的命令which pip来查看它们是否都在使用我们虚拟环境的占位符。

于 2022-01-11T10:48:36.170 回答