pyenv 无法为 python 3.5.3 安装软件包

pyenv failing to install package for python 3.5.3

我的机器上有多个版本的 python,这就是我安装 pyenv 来管理它们的原因。根据 pyenv 我有

ola@station:~$ pyenv versions
* system (set by /home/ola/.pyenv/version)
  3.4.6
  3.5.3
  3.6.1

如您所见,我将全局(系统默认)设置为 3.5.3

ola@station:~$ pyenv global
3.5.3

我想为 python 3.5 安装 numpy,因为它缺少一个模块。如果我正确理解 pyenv 的工作原理,当我 运行 sudo pip install numpy pyenv 找出要使用的全球版本是 3.5.3 并为此安装 numpy,对吗?

但是,我遇到了以下问题:

ola@station:~$ sudo pip install numpy
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 6, in <module>
    from pkg_resources import load_entry_point
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2991, in <module>
    @_call_aside
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2977, in _call_aside
    f(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 3004, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 664, in _build_master
    return cls._build_from_requirements(__requires__)
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 677, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 856, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'pip==8.1.2' distribution was not found and is required by the application

我该如何解决这个问题?

注意 运行 sudo pip3 install numpy 没有帮助,因为它告诉我

ola@station:~$ sudo pip3 install numpy
Requirement already satisfied: numpy in /usr/local/lib/python2.7/dist-packages

但是我的机器上没有 python 3.5.3 的 numpy。据我了解 pip3 版本和 python 版本是不同的东西。

你可以试试:

sudo python3 -m pip install numpy

如果这不起作用,您可以尝试从 python2 中删除 numpy。据我所知,Ubuntu 在 pip 方面有一些奇怪的怪癖,所以它也取决于你的 OS/distribution。

这是一个老问题,但对于其他遇到这个问题的人来说:

使用pyenv which决定执行哪个script/executable。例如,如果 3.5.3 是您当前使用的 Python 版本,您应该会看到以下内容:

ola@station:~$ pyenv which pip3
/home/ola/.pyenv/versions/3.5.3/bin/pip3

此时你只需要做:

pip3 install numpy

不需要 susudo,因为整个 pyenv 安装位于 ~ola/.pyenv/.

下的主目录中

在问题中显示的所有示例中,似乎 3.5.3 未正确激活,因为涉及 /usr/local 下的 Python 2.7 的系统范围版本.所以:

  • 使用pyenv version检查当前激活的版本。
  • 使用pyenv which <script>查看将执行哪个脚本。