Come installare pip per Python 3.6 su Ubuntu 16.10?

Vorrei iniziare sottolineando che questa domanda potrebbe sembrare un duplicato, ma non lo è. Tutte le domande che ho visto qui su Ask Ubuntu riguardavano pip per Python 3 e sto parlando di Python 3.6. I passaggi utilizzati non funzionano per Python 3.6.

  1. Ho ottenuto un’immagine chiara di Ubuntu 16.10 dal docker ufficiale .
  2. Esegui apt-get update
  3. Esegui apt-get install python3.6
  4. Esegui apt-get install python3-pip
  5. Esegui le pip3 install requests bs4
  6. Esegui python3.6 script.py

Got ModuleNotFoundError seguito:

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

Python e pip’s ho nella macchina:

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

Questa risposta presuppone che hai installato python3.6 . Per python3.7 , basta sostituire 3.6 con 3.7 .

Installazione

Per quanto riguarda l’ installazione di pip , l’uso di curl (invece di wget ) evita di scrivere il file sul disco.

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

Se si desidera evitare l’uso di sudo , fare riferimento alla documentazione collegata per l’installazione locale usando il flag --user .

-H bandiera

Il flag -H è evidentemente necessario con sudo per evitare errori come questi durante l’installazione di pip per un interprete python aggiornato:

La directory ‘/home/someuser/.cache/pip/http’ o la sua directory madre non è di proprietà dell’utente corrente e la cache è stata disabilitata. Si prega di verificare le autorizzazioni e il proprietario di quella directory. Se esegui pip con sudo, potresti volere il flag -H di sudo.

La directory ‘/home/someuser/.cache/pip’ o la sua directory madre non è di proprietà dell’utente corrente e le ruote di memorizzazione nella cache sono state disabilitate. controlla le autorizzazioni e il proprietario di quella directory. Se esegui pip con sudo, potresti volere il flag -H di sudo.

Verifica

Dopo di ciò, pip3.6 può aspettare che pip , pip3 e pip3.6 puntino allo stesso objective:

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

Ovviamente puoi anche usare python3.6 -m pip .

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

Ho una risposta su StackOverflow.

Fonte: https://stackoverflow.com/a/44254088/1812319

Supponiamo che tu abbia un sistema con Ubuntu 16.04, 16.10 o 17.04, e tu voglia che Python 3.6 sia il Python predefinito.

Se stai usando Ubuntu 16.04 LTS, dovrai usare un PPA:

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

Quindi, esegui il seguente comando (questo funziona subito dopo 16.10 e 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 

Una volta completato quanto sopra, ognuno dei seguenti comandi di shell dovrebbe indicare Python 3.6.1 (o una versione più recente di 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 

La directory ‘/home/doc/.cache/pip/http’ o la sua directory madre non è di proprietà dell’utente e la cache è stata disabilitata. Si prega di verificare le autorizzazioni e il proprietario di quella directory. Se esegui pip con sudo, potresti volere il flag -H di sudo.

risoluto

 chown root:doc /home/doc/.cache/pip/http 

Se l’implementazione è difficile da spiegare, è una ctriggers idea.