Подтвердить что ты не робот

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

Я хотел бы начать с указания на то, что этот вопрос может показаться дубликатом, но это не так. Все вопросы, которые я здесь видел, касались 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
4b9b3361

Ответ 1

Предположим, что у вас есть система с 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

Ответ 2

По крайней мере, в ubuntu 16.10 по умолчанию python3 есть python3.5. Таким образом, все пакеты python3-X будут установлены для python3.5, а не для python3.6.

Вы можете проверить это, проверив shebang pip3:

$ head -n1 $(which pip3)
#!/usr/bin/python3

К счастью, пип, установленный пакетом python3-pip, установлен в "общий" /usr/lib/python3/dist-packages, так что python3.6 также может воспользоваться им.

Вы можете установить пакеты для python3.6, выполнив:

python3.6 -m pip install ...

Например:

$ python3.6 -m pip install requests
$ python3.6 -c 'import requests; print(requests.__file__)'
/usr/local/lib/python3.6/dist-packages/requests/__init__.py

Ответ 3

Этот ответ предполагает, что у вас установлен 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 или его родительский каталог не принадлежат текущему пользователю, и колеса кэширования отключены. проверьте разрешения и владельца этого каталога. Если вы выполняете pip с помощью sudo, вы можете захотеть установить флаг sudo -H.

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

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

верификация

После этого можно ожидать, что 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)

Ответ 4

Этот веб-сайт содержит гораздо более чистое решение, оно оставляет целую цепочку, и вы можете легко переключаться между 3.5 и 3.6, а затем, когда освобождается 3.7.

http://ubuntuhandbook.org/index.php/2017/07/install-python-3-6-1-in-ubuntu-16-04-lts/

Краткий обзор:

sudo apt-get install python python-pip python3 python3-pip
sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2

Тогда

$ pip -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
$ pip3 -V
pip 8.1.1 from /usr/local/lib/python3.5/dist-packages (python 3.5)

Затем выберите python 3.6 run

sudo update-alternatives --config python3

и выберите "2". Тогда

$ pip3 -V
pip 8.1.1 from /usr/local/lib/python3.6/dist-packages (python 3.6)

Чтобы обновить pip, выберите нужную версию и

pip3 install --upgrade pip

$ pip3 -V
pip 9.0.1 from /usr/local/lib/python3.6/dist-packages (python 3.6)

Протестировано на Ubuntu 16.04.