web-dev-qa-db-fra.com

Comment installer pip pour Python 3.6 sur Ubuntu 16.10?

Je voudrais commencer par souligner que cette question peut sembler être un doublon, mais ce n'est pas le cas. Toutes les questions que j’ai vues ici concernaient pip pour Python 3 et je parle de Python 3.6. Les étapes utilisées à l'époque ne fonctionnent pas pour Python 3.6.

  1. J'ai une image claire Ubuntu 16.10 du magasin officiel de docker .
  2. Exécuter apt-get update
  3. Exécuter apt-get install python3.6
  4. Exécuter apt-get install python3-pip
  5. Exécuter pip3 install requests bs4
  6. Exécuter python3.6 script.py

Vous avez ModuleNotFoundError ci-dessous:

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

Python et pips j'ai dans la machine:

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

pip
pip3
pip3.5
46
JChris

Supposons que vous avez un système exécutant Ubuntu 16.04, 16.10 ou 17.04 et que vous voulez que Python 3.6 soit le Python par défaut.

Si vous utilisez Ubuntu 16.04 LTS, vous devez utiliser un PPA:

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

Ensuite, exécutez ce qui suit (cela fonctionne tel quel les versions 16.10 et 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

Lorsque vous avez terminé tout ce qui précède, chacune des commandes Shell suivantes doit indiquer Python 3.6.1 (ou une version plus récente de 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
88
Miles Erickson

Au moins dans Ubuntu 16.10, le python3 par défaut est python3.5. En tant que tel, tous les packages python3-X seront installés pour python3.5 et non pour python3.6.

Vous pouvez le vérifier en vérifiant le Shebang de pip3:

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

Heureusement, le pip installé par le package python3-pip est installé dans le /usr/lib/python3/dist-packages "partagé", de sorte que python3.6 puisse également en tirer parti.

Vous pouvez installer des paquets pour python3.6 en faisant:

python3.6 -m pip install ...

Par exemple:

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

Cette réponse suppose que vous avez installé python3.6. Pour python3.7, remplacez 3.6 par 3.7. Pour python3.8, remplacez 3.6 par 3.8, mais vous aurez peut-être également besoin du package python3.8-distutils.

Installation avec Sudo

En ce qui concerne installation de pip , l'utilisation de curl (au lieu de wget) évite l'écriture du fichier sur le disque.

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

Le drapeau -H est évidemment nécessaire avec Sudo afin d'éviter des erreurs telles que les suivantes lors de l'installation de pip pour un interprète python mis à jour:

Le répertoire '/home/someuser/.cache/pip/http' ou son répertoire parent n'appartient pas à l'utilisateur actuel et le cache a été désactivé. Veuillez vérifier les autorisations et le propriétaire de ce répertoire. Si vous exécutez pip avec Sudo, vous voudrez peut-être le drapeau -H de Sudo.

Le répertoire '/home/someuser/.cache/pip' ou son répertoire parent n'appartient pas à l'utilisateur actuel et la mise en cache des roues a été désactivée. vérifiez les autorisations et le propriétaire de ce répertoire. Si vous exécutez pip avec Sudo, vous voudrez peut-être le drapeau -H de Sudo.

Installation sans Sudo

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

Cela peut parfois donner un avertissement tel que:

AVERTISSEMENT: la roue de script est installée dans '/home/ubuntu/.local/bin' qui ne se trouve pas sur PATH. Pensez à ajouter ce répertoire à PATH ou, si vous préférez supprimer cet avertissement, utilisez --no-warn-script-location.

Vérification

Après cela, on peut s’attendre à ce que pip, pip3 et pip3.6 désignent tous la même cible:

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

Bien sûr, vous pouvez également utiliser python3.6 -m pip.

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

Ce site contient une solution beaucoup plus propre, il laisse pip intact et on peut aisément basculer entre 3.5 et 3.6, et chaque fois que la version 3.7 est publiée.

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

Un bref résumé:

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

Ensuite

$ 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)

Ensuite, pour sélectionner python 3.6, exécutez

Sudo update-alternatives --config python3

et sélectionnez '2'. ensuite

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

Pour mettre à jour pip, sélectionnez la version souhaitée et

pip3 install --upgrade pip

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

Testé sur Ubuntu 16.04.

3
genetica