Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法升级sklearn,pip指向python3_Python_Python 2.7_Pip - Fatal编程技术网

无法升级sklearn,pip指向python3

无法升级sklearn,pip指向python3,python,python-2.7,pip,Python,Python 2.7,Pip,我想用pip升级Python2.7中的sklearn,但我不能,因为一两天来,pip似乎指向Python3.4,而不是Python2.7: > pip install -U scikit-learn Requirement already up-to-date: scikit-learn in /home/kinkyboy/.local/lib/python3.4/site-packages Cleaning up... > which python python is /usr/

我想用pip升级Python2.7中的sklearn,但我不能,因为一两天来,pip似乎指向Python3.4,而不是Python2.7:

> pip install -U scikit-learn
Requirement already up-to-date: scikit-learn in /home/kinkyboy/.local/lib/python3.4/site-packages
Cleaning up...
> which python
python is /usr/bin/python
python is /home/kinkyboy/conda/bin/python
> ls -l /usr/bin/python
lrwxrwxrwx 1 root root 9 Jan  6  2016 /usr/bin/python -> python2.7*
这显示了我当前的pip*命令:

> pip -V
pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.4)
> pip2 -V
pip 1.5.4 from /usr/lib/python2.7/dist-packages (python 2.7)
> pip3 -V
pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.4)
这表明python正在使用python 2.7:

> pip install -U scikit-learn
Requirement already up-to-date: scikit-learn in /home/kinkyboy/.local/lib/python3.4/site-packages
Cleaning up...
> which python
python is /usr/bin/python
python is /home/kinkyboy/conda/bin/python
> ls -l /usr/bin/python
lrwxrwxrwx 1 root root 9 Jan  6  2016 /usr/bin/python -> python2.7*
我设法用pip2升级了sklearn,但是如何将pip指向Python2.7呢

更新: 我尝试了以下操作,但得到了一个“权限被拒绝”错误

> python -m pip install -U --force-reinstall pip
Collecting pip
  Using cached pip-9.0.1-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 9.0.1
    Uninstalling pip-9.0.1:
Exception:
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/usr/local/lib/python2.7/dist-packages/pip/commands/install.py", line 342, in run
    prefix=options.prefix_path,
  File "/usr/local/lib/python2.7/dist-packages/pip/req/req_set.py", line 778, in install
    requirement.uninstall(auto_confirm=True)
  File "/usr/local/lib/python2.7/dist-packages/pip/req/req_install.py", line 754, in uninstall
    paths_to_remove.remove(auto_confirm)
  File "/usr/local/lib/python2.7/dist-packages/pip/req/req_uninstall.py", line 115, in remove
    renames(path, new_path)
  File "/usr/local/lib/python2.7/dist-packages/pip/utils/__init__.py", line 267, in renames
    shutil.move(old, new)
  File "/usr/lib/python2.7/shutil.py", line 303, in move
    os.unlink(src)
OSError: [Errno 13] Permission denied: '/usr/bin/pip'

即使我知道使用sudo是不好的(尽管我可能在过去使用过它),我也尝试使用sudo运行相同的命令(它起作用了),我尝试给予“/usr/bin/pip”777权限(但它仍然无法帮助运行上面的正常卸载),我还执行了sudo卸载python pip(没有帮助上面的正常卸载)。在这些尝试之后,我将一切恢复原状。

我在Homebrew的存储库中发现这个GitHub线程存在类似的问题:

python3 -m pip install -U --force-reinstall pip
python -m pip install -U --force-reinstall pip
显然,执行以下命令可以解决您的问题:

python3 -m pip install -U --force-reinstall pip
python -m pip install -U --force-reinstall pip
但您始终可以使用以下命令执行pip:

python -m pip
python3 -m pip

我在Homebrew的存储库中发现这个GitHub线程存在类似的问题:

python3 -m pip install -U --force-reinstall pip
python -m pip install -U --force-reinstall pip
显然,执行以下命令可以解决您的问题:

python3 -m pip install -U --force-reinstall pip
python -m pip install -U --force-reinstall pip
但您始终可以使用以下命令执行pip:

python -m pip
python3 -m pip

不确定您是如何更改它的,但是如果您在/usr/bin/(编辑:和您安装的任何其他pip)中修改pip文件的第一行,您可以将其更改回原来的位置。下面假设您正在修改/usr/bin/pip:

1.)确保您以root用户身份对/usr/bin/pip具有写访问权限,或者暂时使用
sudo chmod-c 757/usr/bin/pip
更改权限

2.)从
#更新pip的第一行/usr/bin/python3
(我假设正在显示)到
#/usr/bin/python

3.)保存
pip
,如果您更改了权限,则将权限恢复为755(这样就不会有其他人对其进行干预)

更改之前/之后的我的输出:

$ pip -V
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.5)
$ pip -V
pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)

在不知道它最初是如何改变的情况下,这将是我修复它的方式。否则,我的主要方法是找出是什么首先触发了它,然后尝试将其反转。

不确定您是如何更改它的,但如果您在/usr/bin/(编辑:和您安装的任何其他pip)中修改pip文件的第一行,您可以将其更改回。下面假设您正在修改/usr/bin/pip:

1.)确保您以root用户身份对/usr/bin/pip具有写访问权限,或者暂时使用
sudo chmod-c 757/usr/bin/pip
更改权限

2.)从
#更新pip的第一行/usr/bin/python3
(我假设正在显示)到
#/usr/bin/python

3.)保存
pip
,如果您更改了权限,则将权限恢复为755(这样就不会有其他人对其进行干预)

更改之前/之后的我的输出:

$ pip -V
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.5)
$ pip -V
pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)

在不知道它最初是如何改变的情况下,这将是我修复它的方式。否则,我的主要方法就是找出是什么首先触发了它,并尝试将其反转。

我从@Idlehands的初始答案中得到启发,检查python的可执行文件是否以#开头/usr/bin/python3。没有。但是,pip的可执行文件确实:

> which pip
   pip is /usr/local/bin/pip
   pip is /usr/bin/pip
   pip is /home/kinkyboy/conda/bin/pip
> diff /usr/local/bin/pip /usr/bin/pip3
   < #!/usr/bin/python3
>哪个pip
pip为/usr/local/bin/pip
pip为/usr/bin/pip
皮普是/家里/金基男孩/康达/宾/皮普
>diff/usr/local/bin/pip/usr/bin/pip3
< #!/usr/bin/python3
我变了/usr/bin/python3到#/usr/bin/python,然后pip-V指向Python2.7


sklearn是最新的,我可以导入一个最新版本的模块(这是我最初想要做的)。关于这一点:sklearn是最新的,可能是因为我以前在linux中重新安装了python pip,并用sudo卸载了pip,等等,所以我并不完全肯定,如果没有所有这些,sklearn会是最新的。

我从@Idlehands的初始答案中得到灵感,检查python的可执行文件是否以#开头/usr/bin/python3。没有。但是,pip的可执行文件确实:

> which pip
   pip is /usr/local/bin/pip
   pip is /usr/bin/pip
   pip is /home/kinkyboy/conda/bin/pip
> diff /usr/local/bin/pip /usr/bin/pip3
   < #!/usr/bin/python3
>哪个pip
pip为/usr/local/bin/pip
pip为/usr/bin/pip
皮普是/家里/金基男孩/康达/宾/皮普
>diff/usr/local/bin/pip/usr/bin/pip3
< #!/usr/bin/python3
我变了/usr/bin/python3到#/usr/bin/python,然后pip-V指向Python2.7


sklearn是最新的,我可以导入一个最新版本的模块(这是我最初想要做的)。关于这一点:sklearn是最新的,可能是因为我以前在linux中重新安装了python pip,并用sudo卸载了pip,等等,所以我并不完全肯定,如果没有所有这些,sklearn在我安装sklearn时是最新的,它默认指向python3.5,我想在Python2.7中使用它。根据Vitor的建议,我运行了以下命令:

    sudo python -m pip install -U scikit-learn

这对我很有效

在我的例子中,当我安装sklearn时,它默认指向python3.5,我想在python2.7中使用它。根据Vitor的建议,我运行了以下命令:

    sudo python -m pip install -U scikit-learn

这对我很有效

你在使用哪个操作系统?LinuxMint,我忘了写下我已经回答了你下面的问题,看看我的解决方案是否对你有帮助。谢谢你,我今晚会试试。我想pip会指向上次安装的版本。因此,如果您想将pip用作pip2,只需重新安装pip2您使用的是哪种操作系统?linux mint,我忘了写下我已经回答了您下面的问题,看看我的解决方案是否对您有帮助。谢谢,我今晚会尝试。我想pip将指向上次安装的版本。因此,如果您想将pip用作pip2,只需重新安装pip2,/usr/bin/pip文件的第一行已经是#/usr/bin/python,文件的权限是755,所以不幸的是,这无助于我解决问题,请参见我自己的答案。如果您编辑您的答案,包括我的解决方案,我将很乐意接受