Jak zainstalować pip dla Python 3.6 na Ubuntu 16.10?

40

Chciałbym zacząć od wskazania, że ​​to pytanie może wydawać się duplikatem, ale tak nie jest. Wszystkie pytania, które widziałem tutaj na Ask Ubuntu, dotyczyły pipa dla Pythona 3 i mówię o Pythonie 3.6. Zastosowane wówczas kroki nie działają w Pythonie 3.6.

  1. Dostałem wyraźny obraz Ubuntu 16.10 z oficjalnego sklepu dokerów .
  2. Biegać apt-get update
  3. Biegać apt-get install python3.6
  4. Biegać apt-get install python3-pip
  5. Biegać pip3 install requests bs4
  6. Biegać python3.6 script.py

Dostałem ModuleNotFoundErrorponiżej:

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

Python i pip's mam w maszynie:

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

pip
pip3
pip3.5
JChris
źródło
Pytanie zostało przesłane krzyżowo do Stack Overflow
wjandrea

Odpowiedzi:

44

Ta odpowiedź zakłada, że ​​masz python3.6zainstalowany. Dla python3.7wymienić 3.6z 3.7. Dla python3.8wymienić 3.6z 3.8, ale może również wymagać pierwszy python3.8-distutilspakiet.

Instalacja za pomocą sudo

Jeśli chodzi o instalacjępip , użycie curl(zamiast wget) pozwala uniknąć zapisywania pliku na dysku.

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

-HFlaga jest ewidentnie konieczne ze sudow celu uniknięcia błędów takich jak następujące po zainstalowaniu pip dla zaktualizowanej interpreter Pythona:

Katalog „/home/someuser/.cache/pip/http” lub jego katalog nadrzędny nie jest własnością bieżącego użytkownika, a pamięć podręczna została wyłączona. Sprawdź uprawnienia i właściciela tego katalogu. Jeśli wykonujesz pip za pomocą sudo, możesz chcieć flagi -H sudo.

Katalog „/home/someuser/.cache/pip” lub jego katalog nadrzędny nie jest własnością bieżącego użytkownika, a koła buforowania zostały wyłączone. sprawdź uprawnienia i właściciela tego katalogu. Jeśli wykonujesz pip za pomocą sudo, możesz chcieć flagi -H sudo.

Instalacja bez sudo

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

Może to czasem dać ostrzeżenie, takie jak:

OSTRZEŻENIE: Koło skryptowe jest zainstalowane w katalogu „/home/ubuntu/.local/bin”, który nie znajduje się na zmiennej PATH. Rozważ dodanie tego katalogu do PATH lub, jeśli wolisz zignorować to ostrzeżenie, użyj --no-warn-script-location.

Weryfikacja

Po tym pip, pip3i pip3.6wszystko może się spodziewać, że wskazują na ten sam cel:

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

Oczywiście możesz również użyć alternatywnie python3.6 -m pip.

$ python3.6 -m pip -V
pip 18.0 from /usr/local/lib/python3.6/dist-packages (python 3.6)
Acumenus
źródło
5
Wydaje się, że skrypt zakłada, że python3.6ma działające narzędzia konfiguracyjne / łatwą instalację. Z tego powodu nie działało to dla mnie. Skończyło się na tym, żecurl https://bootstrap.pypa.io/ez_setup.py -o - | python3.6 && python3.6 -m easy_install pip
FirefoxMetzger
Po zainstalowaniu python3.6i python3.6-devze ppa:jonathonf/python-3.6na Ubuntu 14.04. Nie jestem pewien, czy po prostu zapomniałem setuptools, czy też się zepsuł, ale wtedy nie działało.
FirefoxMetzger
W żaden sposób nie fałszuje twojej odpowiedzi =) To tylko dodatek na wypadek, gdyby ktoś napotkał ten sam (mam nadzieję, rzadki) problem.
FirefoxMetzger,
@ABB Jeśli chcę pip -Vbyć python 2.7i pip3 -V && pip3.6 -Vbyć, python 3.6jak mogę to zrobić?
Benyamin Jafari,
1
Możesz również użyć wget -O -do przesłania wyniku na standardowe wyjście:wget -O - https://bootstrap.pypa.io/get-pip.py | sudo -H python3.6
ingomueller.net
16

Mam odpowiedź na temat przepełnienia stosu.

Źródło: https://stackoverflow.com/a/44254088/1812319

Załóżmy, że masz system z Ubuntu 16.04, 16.10 lub 17.04 i chcesz, aby Python 3.6 był domyślnym Pythonem.

Jeśli używasz Ubuntu 16.04 LTS, musisz użyć PPA:

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

Następnie uruchom następujące polecenie (działa to od razu po wyjęciu z pudełka 16.10 i 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

Po wykonaniu wszystkich powyższych czynności każde z poniższych poleceń powłoki powinno wskazywać Python 3.6.1(lub nowszą wersję Pythona 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
JChris
źródło
1
„Brak modułu o nazwie pip”
Turtles Are Cute
Spróbuj wykonać a sudo apt get updatei sudo apt get upgradeprzed uruchomieniem polecenia.
JChris
Dzięki za pomoc; bardzo mile widziane. Podczas rozwiązywania tego problemu doprowadziłem mój system do stanu, w którym jestem w pętli logowania i wygląda na to, że najłatwiejszym rozwiązaniem będzie ponowne sformatowanie / ponowna instalacja.
Turtles Are Cute