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
不需要 su
或 sudo
,因为整个 pyenv
安装位于 ~ola/.pyenv/
.
下的主目录中
在问题中显示的所有示例中,似乎 3.5.3
未正确激活,因为涉及 /usr/local
下的 Python 2.7 的系统范围版本.所以:
- 使用
pyenv version
检查当前激活的版本。
- 使用
pyenv which <script>
查看将执行哪个脚本。
我的机器上有多个版本的 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
不需要 su
或 sudo
,因为整个 pyenv
安装位于 ~ola/.pyenv/
.
在问题中显示的所有示例中,似乎 3.5.3
未正确激活,因为涉及 /usr/local
下的 Python 2.7 的系统范围版本.所以:
- 使用
pyenv version
检查当前激活的版本。 - 使用
pyenv which <script>
查看将执行哪个脚本。