Как установить pip для Python 3.6 на Ubuntu 16.10?

Я хотел бы начать с того, что этот вопрос может показаться дубликатом, но это не так. Все вопросы, которые я видел здесь на Ask Ubuntu, касались pip для Python 3, и я говорю о Python 3.6. Шаги, использованные тогда, не работают для Python 3.6.

  1. Я получил четкое изображение Ubuntu 16.10 из официальный магазин docker.
  2. Бежать apt-get update
  3. Бежать apt-get install python3.6
  4. Бежать apt-get install python3-pip
  5. Бежать pip3 install requests bs4
  6. Бежать python3.6 script.py

Получил ModuleNotFoundError ниже:

 Traceback (most recent call last):    File "script.py", line 6, in <module>     import requests ModuleNotFoundError: No module named 'requests'

Python и pip у меня есть в машине:

python3python3.5python3.5mpython3.6python3mpython3-configpython3.5-configpython3.5m-configpython3.6mpython3m-config  pippip3pip3.5

Этот ответ предполагает, что у вас есть python3.6 установленный. Для python3.7, заменить 3.6 с 3.7. Для python3.8, заменить 3.6 с 3.8, но это также может сначала потребовать python3.8-distutils пакет.

Установка с помощью sudo

По отношению к установка pip, используя curl (вместо wget) позволяет избежать записи файла на диск.

curl https://bootstrap.pypa.io/get-pip.py | sudo -H python3.6

То -H флаг, очевидно, необходим с sudo чтобы предотвратить такие ошибки, как следующие, при установке pip для обновленного интерпретатора python:

Каталог "/home/someuser/.cache/pip/http" или его родительский каталог не принадлежит текущему пользователю, и кэш был отключен. Пожалуйста, проверьте разрешения и владельца этого каталога. При выполнении pip с помощью sudo вам может потребоваться флаг sudo -H.

Каталог '/home/someuser/.cache/pip' или его родительский каталог не принадлежит текущему пользователю, и кэширование wheels отключено. проверьте разрешения и владельца этого каталога. При выполнении pip с помощью sudo вам может потребоваться флаг sudo -H.

Установка без sudo

curl https://bootstrap.pypa.io/get-pip.py | python3.6 - --user

Иногда это может выдавать предупреждение, например:

ПРЕДУПРЕЖДЕНИЕ: Колесо скрипта установлено в '/home/ubuntu/.local/bin', которого нет в PATH. Рассмотрите возможность добавления этого каталога в PATH или, если вы предпочитаете подавлять это предупреждение, используйте --no-warn-script-location.

Проверка

После этого, pip, pip3, и pip3.6 можно ли ожидать, что все они будут указывать на одну и ту же цель:

$ (pip -V && pip3 -V && pip3.6 -V) | uniqpip 18.0 from /usr/local/lib/python3.6/dist-packages (python 3.6)

Конечно, вы можете в качестве альтернативы использовать python3.6 -m pip также.

$ python3.6 -m pip -Vpip 18.0 from /usr/local/lib/python3.6/dist-packages (python 3.6)

Я получил ответ на stackoverflow.

Источник: https://stackoverflow.com/a/44254088/1812319

Давайте предположим, что у вас есть система под управлением Ubuntu 16.04, 16.10 или 17.04, и вы хотите, чтобы Python 3.6 был Python по умолчанию.

Если вы используете Ubuntu 16.04 LTS, вам нужно будет использовать PPA:

sudo add-apt-repository ppa:jonathonf/python-3.6  # (only for 16.04 LTS)

Затем выполните следующее (это работает из коробки на 16.10 и 17.04):

sudo apt updatesudo apt install python3.6sudo apt install python3.6-devsudo apt install python3.6-venvwget https://bootstrap.pypa.io/get-pip.pysudo python3.6 get-pip.pysudo ln -s /usr/bin/python3.6 /usr/local/bin/python3sudo ln -s /usr/local/bin/pip /usr/local/bin/pip3# Do this only if you want python3 to be the default Python# instead of python2 (may be dangerous, esp. before 2020):# sudo ln -s /usr/bin/python3.6 /usr/local/bin/python

Когда вы выполните все вышеперечисленное, каждая из следующих команд оболочки должна указывать Python 3.6.1 (или более поздняя версия Python 3.6):

python --version   # (this will reflect your choice, see above)python3 --version$(head -1 `which pip` | tail -c +3) --version$(head -1 `which pip3` | tail -c +3) --version

Вопрос был перекрестно отправлен в Stack Overflow