Jak zainstalować pip dla Pythona 3.6 na Ubuntu 16.10?
Chciałbym zacząć od wskazania, że to pytanie może wydawać się duplikatem, ale tak nie jest. wszystkie pytania, które tutaj widziałem, dotyczyły pip dla Pythona 3 i mówię o Pythonie 3.6. Kroki używane w tamtych czasach nie działają w Pythonie 3.6.
- otrzymałem czysty obraz Ubuntu 16.10 z oficjalnego sklepu docker .
- Run
apt-get update
- Run
apt-get install python3.6
- Run
apt-get install python3-pip
- Run
pip3 install requests bs4
- Run
python3.6 script.py
Got ModuleNotFoundError
poniżej:
Traceback (most recent call last):
File "script.py", line 6, in <module>
import requests
ModuleNotFoundError: No module named 'requests'
Pythona i Pipa 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
4 answers
Załóżmy, że masz system z Ubuntu 16.04, 16.10 lub 17.04 i chcesz, aby Python 3.6 był Pythonem domyślnym.
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 (działa to po wyjęciu z pudełka w dniach 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, 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-14 22:50:37
W ubuntu 16.10 domyślną wartością python3
jest python3.5
. W związku z tym wszystkie pakiety python3-X
zostaną zainstalowane dla python3.5, a nie dla python3. 6.
Możesz to zweryfikować sprawdzając shebang z pip3
:
$ head -n1 $(which pip3)
#!/usr/bin/python3
Na szczęście pip zainstalowany przez pakiet python3-pip
jest zainstalowany w" shared " /usr/lib/python3/dist-packages
tak, że python3.6 może również z niego skorzystać.
Możesz zainstalować pakiety dla python3.6 wykonując:
python3.6 -m pip install ...
Na przykład:
$ python3.6 -m pip install requests
$ python3.6 -c 'import requests; print(requests.__file__)'
/usr/local/lib/python3.6/dist-packages/requests/__init__.py
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-08 05:12:01
Ta odpowiedź zakłada, że masz python3.6
zainstalowany. Dla python3.7
, wystarczy zastąpić 3.6
przez 3.7
.
Instalacja
W odniesieniu do instalacji pip
, użycie curl
(zamiast wget
) unika zapisu pliku na dysk.
curl https://bootstrap.pypa.io/get-pip.py | sudo -H python3.6
Jeśli chcesz uniknąć używania sudo
, zapoznaj się z dołączoną dokumentacją, aby zainstalować ją lokalnie przy użyciu znacznika --user
.
-flaga H
Znacznik -H
jest ewidentnie konieczny z sudo
, aby zapobiec błędom takie jak te podczas instalacji PIP dla zaktualizowanego interpretera Pythona:
Katalog ' / home / someuser/.cache / pip / http " lub jego katalogu nadrzędnego 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żeli wykonanie pip z sudo, możesz chcieć flagi sudo-H.
Katalog '/home / someuser/.cache / pip " lub jego Katalog nadrzędny nie jest własnością bieżący użytkownik i koła buforowania został niepełnosprawni. sprawdź uprawnienia i właściciel tego katalogu. Jeśli wykonujesz pip z sudo, możesz chcieć flagi sudo-H.
Weryfikacja
Po tym, pip
, pip3
, i pip3.6
można oczekiwać, że wszystkie wskażą 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ć python3.6 -m pip
.
$ python3.6 -m pip -V
pip 18.0 from /usr/local/lib/python3.6/dist-packages (python 3.6)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-23 18:35:24
Ta strona zawiera znacznie czystsze rozwiązanie, pozostawia PIP nienaruszony,jak również i można łatwo przełączać się między 3.5 i 3.6, a następnie za każdym razem, gdy 3.7 jest wydany.
Http://ubuntuhandbook.org/index.php/2017/07/install-python-3-6-1-in-ubuntu-16-04-lts/
Krótkie podsumowanie:
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
Then
$ 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)
Następnie wybierz python 3.6 Uruchom
sudo update-alternatives --config python3
I wybierz "2". Then
$ pip3 -V
pip 8.1.1 from /usr/local/lib/python3.6/dist-packages (python 3.6)
Aby zaktualizować pip wybierz żądaną wersję i
pip3 install --upgrade pip
$ pip3 -V
pip 9.0.1 from /usr/local/lib/python3.6/dist-packages (python 3.6)
Sprawdzone na Ubuntu 16.04.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-07 11:34:31