Как установить pip для Python 3.6 на Ubuntu 16.10?
Я хотел бы начать с указания на то, что этот вопрос может показаться дубликатом, но это не так. Все вопросы, которые я здесь видел, касались pip для Python 3, а я говорю о Python 3.6. Шаги, используемые тогда, не работают для Python 3.6.
- Я получил четкое изображение Ubuntu 16.10 из официального магазина докеров.
- Запустите
apt-get update
- Запустите
apt-get install python3.6
- Запустите
apt-get install python3-pip
- Запустите
pip3 install requests bs4
- Запустите
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
Ответы
Ответ 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.