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

41

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

  1. Я получил четкое изображение Ubuntu 16.10 из официального магазина докеров .
  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'

Питон и пипс у меня в машине:

python3
python3.5
python3.5m
python3.6
python3m
python3-config
python3.5-config
python3.5m-config
python3.6m
python3m-config  

pip
pip3
pip3.5
JChris
источник
Вопрос был
добавлен в

Ответы:

45

Этот ответ предполагает, что вы 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, вам может потребоваться флаг -H у sudo.

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

Установка без 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) | uniq
pip 18.0 from /usr/local/lib/python3.6/dist-packages (python 3.6)

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

$ python3.6 -m pip -V
pip 18.0 from /usr/local/lib/python3.6/dist-packages (python 3.6)
Акаменус
источник
5
Скрипт, похоже, предполагает наличие python3.6рабочих инструментов setup / easy install. По этой причине это не сработало для меня. Я закончил тем, что использовалcurl https://bootstrap.pypa.io/ez_setup.py -o - | python3.6 && python3.6 -m easy_install pip
FirefoxMetzger
Я установил python3.6и python3.6-devиз ppa:jonathonf/python-3.6Ubuntu 14.04. Я не уверен, что я просто забыл setuptools или сломался, но в то время он не работал.
FirefoxMetzger
Это никак не фальсифицирует ваш ответ =) Это просто дополнение на случай, если кто-нибудь столкнется с той же (надеюсь, необычной) проблемой.
FirefoxMetzger
@ABB Если я хочу pip -Vбыть python 2.7и pip3 -V && pip3.6 -Vбыть, python 3.6как я могу это сделать?
Беньямин Джафари
1
Вы также можете использовать wget -O -для потоковой передачи результатов на стандартный вывод:wget -O - https://bootstrap.pypa.io/get-pip.py | sudo -H python3.6
ingomueller.net
16

Я получил ответ на 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 update
sudo apt install python3.6
sudo apt install python3.6-dev
sudo apt install python3.6-venv
wget https://bootstrap.pypa.io/get-pip.py
sudo python3.6 get-pip.py
sudo ln -s /usr/bin/python3.6 /usr/local/bin/python3
sudo 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
JChris
источник
1
«Никакого модуля с именем pip»
Черепахи милые
Попробуйте сделать sudo apt get updateи sudo apt get upgradeперед запуском команды.
JChris
Спасибо за помощь; очень признателен. При устранении неполадок я поставил свою систему в состояние, в котором я нахожусь в цикле входа в систему, и похоже, что самым простым исправлением будет переформатирование / переустановка.
Черепахи милые