Como instalar o pip para Python 3.6 no Ubuntu 16.10?

40

Gostaria de começar dizendo que essa pergunta pode parecer uma duplicata, mas não é. Todas as perguntas que eu vi aqui no Ask Ubuntu eram sobre pip para Python 3 e eu estou falando sobre Python 3.6. As etapas usadas naquela época não funcionam no Python 3.6.

  1. Eu obtive uma imagem clara do Ubuntu 16.10 na loja oficial do docker .
  2. Corre apt-get update
  3. Corre apt-get install python3.6
  4. Corre apt-get install python3-pip
  5. Corre pip3 install requests bs4
  6. Corre python3.6 script.py

Veja ModuleNotFoundErrorabaixo:

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

Python e pip que eu tenho na máquina:

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
fonte
A pergunta foi cruzada para Stack Overflow
wjandrea

Respostas:

44

Esta resposta assume que você python3.6instalou. Para python3.7, substitua 3.6por 3.7. Para python3.8, substitua 3.6por 3.8, mas também pode exigir primeiro o python3.8-distutilspacote.

Instalação com sudo

Com relação à instalaçãopip , o uso curl(em vez de wget) evita a gravação do arquivo no disco.

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

O -Hsinalizador é evidentemente necessário sudopara evitar erros como os seguintes ao instalar o pip para um interpretador python atualizado:

O diretório '/home/someuser/.cache/pip/http' ou seu diretório pai não é de propriedade do usuário atual e o cache foi desativado. Por favor, verifique as permissões e o proprietário desse diretório. Se estiver executando o pip com o sudo, você pode querer o sinalizador -H do sudo.

O diretório '/home/someuser/.cache/pip' ou seu diretório pai não é de propriedade do usuário atual e as rodas de armazenamento em cache foram desativadas. verifique as permissões e o proprietário desse diretório. Se estiver executando o pip com o sudo, você pode querer o sinalizador -H do sudo.

Instalação sem sudo

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

Às vezes, isso pode emitir um aviso como:

AVISO: A roda de scripts está instalada em '/home/ubuntu/.local/bin', que não está no PATH. Considere adicionar este diretório ao PATH ou, se você preferir suprimir esse aviso, use --no-warn-script-location.

Verificação

Depois disso, pip, pip3, e pip3.6tudo pode ser esperado que apontam para o mesmo alvo:

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

Claro que você também pode usar python3.6 -m pipcomo alternativa .

$ python3.6 -m pip -V
pip 18.0 from /usr/local/lib/python3.6/dist-packages (python 3.6)
Acumenus
fonte
5
O script parece assumir que python3.6possui ferramentas de instalação / instalação fáceis. Por esse motivo, não funcionou para mim. Acabei usandocurl https://bootstrap.pypa.io/ez_setup.py -o - | python3.6 && python3.6 -m easy_install pip
FirefoxMetzger 3/17/17
Eu instalei python3.6e a python3.6-devpartir ppa:jonathonf/python-3.6de um Ubuntu 14.04. Não tenho certeza se simplesmente esqueci as ferramentas de instalação ou se elas quebraram, mas não estavam funcionando no momento.
FirefoxMetzger
Não falsifica a sua resposta de forma alguma =) É apenas uma adição, caso alguém tenha o mesmo problema (espero que seja incomum).
FirefoxMetzger
@ABB Se eu quero pip -Vser python 2.7e pip3 -V && pip3.6 -Vser, python 3.6como posso fazer?
Benyamin Jafari
11
Você também pode usar wget -O -para transmitir o resultado para o stdout:wget -O - https://bootstrap.pypa.io/get-pip.py | sudo -H python3.6
ingomueller.net
16

Eu tenho uma resposta no stackoverflow.

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

Suponhamos que você tenha um sistema executando o Ubuntu 16.04, 16.10 ou 17.04, e deseje que o Python 3.6 seja o Python padrão.

Se você estiver usando o Ubuntu 16.04 LTS, precisará usar um PPA:

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

Em seguida, execute o seguinte (isso funciona imediatamente em 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

Quando você concluir todas as opções acima, cada um dos seguintes comandos do shell deverá indicar Python 3.6.1(ou uma versão mais recente do 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
JChris
fonte
11
"Nenhum módulo chamado pip"
Turtles Are Cute
Tente fazer um sudo apt get updatee sudo apt get upgradeantes de executar o comando.
JChris
Obrigado pela ajuda; muito apreciado. Ao solucionar isso, coloquei meu sistema em um estado em que estou em um loop de login e parece que a correção mais fácil será a reformatação / reinstalação.
Turtles Are Cute