pip无法找到setuptools。

9

我正在从Python 2迁移到Python 3。

我使用python3 -m venv py3创建了一个虚拟环境,并尝试执行pip install -r requirements.txt,但是输出了以下错误信息:

Collecting mock==1.0.1 (from -r requirements.txt (line 8))
  Using cached mock-1.0.1.tar.gz
  setuptools must be installed to install from a source distribution

我查看了我的虚拟环境,发现它已经安装了setuptools:

(py3) 1111:d3 1111$ ls py3/lib/python3.4/site-packages/
__pycache__         easy_install.py         pip-6.0.8.dist-info     setuptools
_markerlib          pip             pkg_resources           setuptools-12.0.5.dist-info

但是当我仍然试图重新安装setuptools时,会显示以下内容:
(py3) 1111:d3 1111$ pip install setuptools
Requirement already satisfied (use --upgrade to upgrade): setuptools in 
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python

我有两个问题:
  1. 为什么虚拟环境文件夹中看不到setuptools的存在?
  2. 为什么它查找 Python 2 文件夹而不是 Python 3?
谢谢!

在你的 py3 虚拟环境中,你能验证正在使用正确的 pip 吗?例如,尝试 which pip 并告诉我们结果。同样地,尝试对 pip3 执行相同操作,看看是否可以将其用作你的 virtualenv 中的 pip - user707650
(py3) 1111:d3 1111$ which pip /Users/1111/_realpython/d3/py3/bin/pip。对于 which pip3,同样如此: /Users/1111/_realpython/d3/py3/bin/pip3 - kurtgn
如果我执行 pip3 install setuptools,它仍然会显示我已经在我的2.7文件夹中拥有它。 - kurtgn
5个回答

9

这不是对你问题的回答,但对我来说,重新安装虚拟环境比尝试解决问题更容易。建立一个新的虚拟环境后,我再次安装或更新软件包时没有任何问题。


4
在我的情况下,安装 pip 用户下的 setuptools 有所帮助:

pip install -U pip setuptools


3

这个对我有用:

pip install --upgrade pip
pip install setuptools

1
我发现重新创建虚拟环境无法解决上述问题。但是,当我删除了虚拟环境,然后升级了pip和virtualenv,问题得到了解决。

pip install -U virtualenv

pip install -U pip


这是正确的答案,尽管我认为 pip 部分可能是不必要的。发生的情况是 virtualenv 正在使用其自己版本的 setuptools,而不是默认 python 安装中安装的版本。在一个非常旧的 virtualenv 安装(1.11.6)的盒子上,我的默认 setuptools 是 33.1.1,但 virtualenv 中安装的版本是 3.6。这导致 requirements.txt 中的依赖项尝试升级 setuptools,从而完全破坏了安装运行。 - brocksamson

0

你可以简单地执行以下操作:

cp /usr/bin/python2 /path/to/my-virtualenv/bin/python2 或者

cp /usr/bin/python3 /path/to/my-virtualenv/bin/python3

对我来说,这解决了一个类似的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接