Ubuntu 16: pip install устанавливает на python 3 вместо 2

Я обновился до Ubuntu 16.04. Я знаю, что он пришел только с установленным Python 3, но каким-то образом Python 2 попал туда (я думаю, как зависимость). Это нормально, потому что я все равно добавлю это. Обе версии Python присутствуют, как это видно из:

$ python --version
Python 2.7.11+
$ python3 --version
Python 3.5.1+

Моя проблема в том, что pip и pip3 по умолчанию равны python3 (и pip2 тоже нет). Например:

$ sudo -H pip install numpy
Requirement already satisfied (use --upgrade to upgrade): numpy in /usr/local/lib/python3.5/dist-packages
$ sudo -H pip3 install numpy
Requirement already satisfied (use --upgrade to upgrade): numpy in /usr/local/lib/python3.5/dist-packages

Для чего это стоит, они имеют в виду разные кормушки:

$ which pip
/usr/local/bin/pip
$ which pip3
/usr/local/bin/pip3

Как мне сделать установку pip в python 2 и установку pip3 в python3 как в Ubuntu 14.04?

4 ответа

Решение

Я нашел способ, который работает, и, надеюсь, я ничего не сломал в процессе. Сначала я попытался отредактировать первую строку в /usr/local/bin/pip, чтобы изменить ее с python 3 на python 2 compiler, но получил ошибку, что не было модуля с именем pip!?

Поэтому я подумал, что, возможно, мне нужно установить его для Python 2. Поэтому я пошел туда и сохранил предложенный ими скрипт get-pip.py. Есть предупреждение, что это может сломать вещи для ОС, но поскольку xenial использует только python3, я решил рискнуть. И это сработало:

$ sudo -H pip install numpy
Requirement already satisfied (use --upgrade to upgrade): numpy in /usr/local/lib/python2.7/dist-packages
$ sudo -H pip3 install numpy
Requirement already satisfied (use --upgrade to upgrade): numpy in /usr/local/lib/python3.5/dist-packages

Все еще существует потенциальная проблема, связанная с тем, что в / usr / local есть что-то, что упоминал Муру, но я мало что знаю об этом, и если что-то продолжит работать, я не буду жаловаться. Единственные способы, которыми я добавил пакеты, - это apt-get и некоторые файлы.deb за редким исключением (например, chrome iirc).

После установки обоих

sudo apt-get install python-pip
sudo apt-get install python3-pip

под Ubuntu 16.04 я могу просто использовать

pip2 install module
pip3 install module

установить нужный модуль для Python2 или Python3 соответственно.

Я надеюсь, что это полезно и работает для вас тоже!

Столкнулись с той же проблемой, которая была устранена путем удаления pip из python3 путем его переустановки следующим образом:

sudo python -m pip install -U --force-reinstall pip

Я знаю, что это старая тема, но поскольку ни один из ответов не решил проблему для меня, и я не смог найти другого решения в Интернете, я подумал, что поделюсь тем, что, наконец, сработало для меня.

Выполнение этих двух строк исправило проблему для меня, и теперь pip устанавливает модули для python2.

      curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py

python get-pip.py
Другие вопросы по тегам