Come installare pip per Python 3.6 su Ubuntu 16.10?


41

Vorrei iniziare sottolineando che questa domanda può 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 in precedenza non funzionano per Python 3.6.

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

Ottenuto di ModuleNotFoundErrorseguito:

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

Python e pip che 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

Risposte:


45

Questa risposta presuppone che tu abbia python3.6installato. Per python3.7, sostituire 3.6con 3.7. Per python3.8, sostituire 3.6con 3.8, ma potrebbe anche richiedere prima il python3.8-distutilspacchetto.

Installazione con sudo

Per quanto riguarda l' installazionepip , l'utilizzo curl(anziché wget) evita di scrivere il file su disco.

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

Il -Hflag è evidentemente necessario sudoper evitare errori come i seguenti quando si installa pip per un interprete python aggiornato:

La directory '/home/someuser/.cache/pip/http' o la sua directory principale non è di proprietà dell'utente corrente e la cache è stata disabilitata. Controlla le autorizzazioni e il proprietario di quella directory. Se si esegue pip con sudo, è possibile che si desideri il flag -H di sudo.

La directory '/home/someuser/.cache/pip' o la sua directory principale non è di proprietà dell'utente corrente e le ruote della cache sono state disabilitate. controlla le autorizzazioni e il proprietario di quella directory. Se si esegue pip con sudo, è possibile che si desideri il flag -H di sudo.

Installazione senza sudo

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

Questo a volte può dare un avvertimento come:

ATTENZIONE: la ruota degli script è installata in '/home/ubuntu/.local/bin' che non si trova su PATH. Valuta di aggiungere questa directory a PATH o, se preferisci sopprimere questo avviso, usa --no-warn-script-location.

Verifica

Dopo questo, pip, pip3, e pip3.6possono tutti essere previsto al punto lo stesso obiettivo:

$ (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 in alternativa python3.6 -m pip.

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

5
Lo script sembra presumere che python3.6abbia strumenti di installazione funzionanti / installazione facile. Per questo motivo non ha funzionato per me. Ho finito per usarecurl https://bootstrap.pypa.io/ez_setup.py -o - | python3.6 && python3.6 -m easy_install pip
FirefoxMetzger il

Ho installato python3.6e python3.6-devda ppa:jonathonf/python-3.6un Ubuntu 14.04. Non sono sicuro se ho semplicemente dimenticato i setuptools o se si è rotto, ma al momento non funzionava.
FirefoxMetzger,

Non falsifica la tua risposta in alcun modo =) È solo un'aggiunta nel caso in cui qualcuno incontri lo stesso problema (si spera non comune).
FirefoxMetzger il

@ABB Se voglio pip -Vessere python 2.7ed pip3 -V && pip3.6 -Vessere python 3.6come posso fare?
Benyamin Jafari,

1
Puoi anche usare wget -O -lo streaming del risultato su stdout:wget -O - https://bootstrap.pypa.io/get-pip.py | sudo -H python3.6
ingomueller.net il

16

Ho ricevuto 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 desideri 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 quanto segue (funziona immediatamente il 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

Dopo aver completato tutto quanto sopra, ciascuno dei seguenti comandi della 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

1
"Nessun modulo chiamato pip"
tartarughe sono carine il

Prova a fare un sudo apt get updatee sudo apt get upgradeprima di eseguire il comando.
JChris,

Grazie per l'aiuto; molto apprezzato. Durante la risoluzione di questo problema, ho portato il mio sistema in uno stato in cui mi trovo in un ciclo di accesso e sembra che la soluzione più semplice sarà una riformattazione / reinstallazione.
tartarughe sono carine il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.