我的机器上有多个版本的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版本是不同的东西。
答案 0 :(得分:1)
你可以尝试:
sudo python3 -m pip install numpy
如果这不起作用,您可以尝试从python2中删除numpy。从我记忆中来看,Ubuntu在pip方面有一些奇怪的怪癖,所以它也取决于你的OS /发行版。
答案 1 :(得分:1)
这是一个老问题,但对于其他任何绊倒它的人来说:
使用pyenv which
确定将执行哪个脚本/可执行文件。例如,如果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>
查看将要执行的确切脚本。