¿Cómo instalar pip para Python 3.6 en Ubuntu 16.10?

40

Me gustaría comenzar señalando que esta pregunta puede parecer un duplicado, pero no lo es. Todas las preguntas que vi aquí en Ask Ubuntu estaban relacionadas con pip para Python 3 y estoy hablando de Python 3.6. Los pasos utilizados en ese entonces no funcionan para Python 3.6.

  1. Obtuve una imagen clara de Ubuntu 16.10 de la tienda oficial de docker .
  2. correr apt-get update
  3. correr apt-get install python3.6
  4. correr apt-get install python3-pip
  5. correr pip3 install requests bs4
  6. correr python3.6 script.py

Tengo ModuleNotFoundErrorabajo:

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

Python y pip que tengo en la 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
fuente
La pregunta se publicó en Stack Overflow
wjandrea

Respuestas:

44

Esta respuesta asume que has python3.6instalado. Para python3.7, reemplazar 3.6con 3.7. Para python3.8, reemplace 3.6con 3.8, pero también puede requerir primero el python3.8-distutilspaquete.

Instalación con sudo

Con respecto a la instalaciónpip , el uso curl(en lugar de wget) evita escribir el archivo en el disco.

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

La -Hbandera es evidentemente necesario con sudoel fin de evitar errores tales como el siguiente al instalar pip para un intérprete pitón actualización:

El directorio '/home/someuser/.cache/pip/http' o su directorio padre no es propiedad del usuario actual y el caché ha sido deshabilitado. Verifique los permisos y el propietario de ese directorio. Si ejecuta pip con sudo, es posible que desee el indicador -H de sudo.

El directorio '/home/someuser/.cache/pip' o su directorio padre no es propiedad del usuario actual y las ruedas de almacenamiento en caché se han deshabilitado. verifique los permisos y el propietario de ese directorio. Si ejecuta pip con sudo, es posible que desee el indicador -H de sudo.

Instalación sin sudo

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

Esto a veces puede dar una advertencia como:

ADVERTENCIA: La rueda de script está instalada en '/home/ubuntu/.local/bin' que no está en PATH. Considere agregar este directorio a PATH o, si prefiere suprimir esta advertencia, use --no-warn-script-location.

Verificación

Después de esto, pip, pip3, y pip3.6todo puede esperarse que apuntan al mismo objetivo:

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

Por supuesto, también puedes usarlo alternativamente python3.6 -m pip.

$ python3.6 -m pip -V
pip 18.0 from /usr/local/lib/python3.6/dist-packages (python 3.6)
Acumenus
fuente
55
El script parece suponer que python3.6tiene herramientas de instalación / instalación fácil de trabajar. Por esa razón no funcionó para mí. Terminé usandocurl https://bootstrap.pypa.io/ez_setup.py -o - | python3.6 && python3.6 -m easy_install pip
FirefoxMetzger
Instalé python3.6y python3.6-devdesde ppa:jonathonf/python-3.6un Ubuntu 14.04. No estoy seguro de si simplemente olvidé las herramientas de configuración o si se rompió, pero no estaba funcionando en ese momento.
FirefoxMetzger
No falsifica su respuesta de ninguna manera =) Es solo una adición en caso de que alguien se encuentre con el mismo problema (con suerte poco común).
FirefoxMetzger
@ABB Si quiero pip -Vser python 2.7y pip3 -V && pip3.6 -Vser, python 3.6¿cómo puedo hacerlo?
Benyamin Jafari
1
También puede usar wget -O -para transmitir el resultado a stdout:wget -O - https://bootstrap.pypa.io/get-pip.py | sudo -H python3.6
ingomueller.net
16

Tengo una respuesta en stackoverflow.

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

Supongamos que tiene un sistema que ejecuta Ubuntu 16.04, 16.10 o 17.04, y desea que Python 3.6 sea el Python predeterminado.

Si está usando Ubuntu 16.04 LTS, necesitará usar un PPA:

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

Luego, ejecute lo siguiente (esto funciona de fábrica en 16.10 y 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

Cuando haya completado todo lo anterior, cada uno de los siguientes comandos de shell debería indicar Python 3.6.1(o una versión más reciente de 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
fuente
1
"Ningún módulo llamado pip"
tortugas son lindas
Trate de hacer una sudo apt get updatey sudo apt get upgradeantes de ejecutar el comando.
JChris
Gracias por la ayuda; muy apreciado. Mientras soluciono este problema, llegué a mi sistema a un estado en el que estoy en un bucle de inicio de sesión, y parece que la solución más fácil será un reformateo / reinstalación.
tortugas son lindas