python-3.x - python3 - ubuntu 18.04 python version
¿Cómo instalar pip para Python 3.6 en Ubuntu 16.10? (4)
Me gustaría comenzar señalando que esta pregunta puede parecer un duplicado, pero no lo es. Todas las preguntas que vi aquí fueron sobre pip para Python 3 y estoy hablando de Python 3.6. Los pasos utilizados en ese momento no funcionan para Python 3.6.
- Obtuve una imagen clara de Ubuntu 16.10 en la tienda de docker oficial .
- Ejecute
apt-get update
- Ejecute
apt-get install python3.6
- Ejecute
apt-get install python3-pip
- Ejecute las
pip3 install requests bs4
- Ejecute
python3.6 script.py
ModuleNotFoundError
continuación:
Traceback (most recent call last):
File "script.py", line 6, in <module>
import requests
ModuleNotFoundError: No module named ''requests''
Python''s y pip''s 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
Al menos en ubuntu 16.10, el python3
predeterminado es python3.5
. Como tal, todos los python3-X
se instalarán para python3.5 y no para python3.6.
Puede verificar esto revisando el shebang de pip3
:
$ head -n1 $(which pip3)
#!/usr/bin/python3
Afortunadamente, el pip instalado por el paquete python3-pip
se instala en el "shared" /usr/lib/python3/dist-packages
para que python3.6 también lo pueda aprovechar.
Puede instalar paquetes para python3.6 haciendo:
python3.6 -m pip install ...
Por ejemplo:
$ python3.6 -m pip install requests
$ python3.6 -c ''import requests; print(requests.__file__)''
/usr/local/lib/python3.6/dist-packages/requests/__init__.py
Esta respuesta asume que ya tienes instalado python3.6
.
Con respecto a la instalación de pip
, el uso de curl
(en lugar de wget
) evita escribir el archivo en el disco.
curl https://bootstrap.pypa.io/get-pip.py | sudo python3.6
Después de esto, se puede esperar que pip
, pip3
y pip3.6
apunten al mismo objetivo:
$ pip -V
pip 9.0.1 from /usr/local/lib/python3.6/dist-packages (python 3.6)
$ pip3 -V
pip 9.0.1 from /usr/local/lib/python3.6/dist-packages (python 3.6)
$ pip3.6 -V
pip 9.0.1 from /usr/local/lib/python3.6/dist-packages (python 3.6)
Por supuesto, también puedes usar python3.6 -m pip
.
$ python3.6 -m pip -V
pip 9.0.1 from /usr/local/lib/python3.6/dist-packages (python 3.6)
Este sitio web contiene una solución mucho más limpia, deja pip intacto como así y uno puede cambiar fácilmente entre 3.5 y 3.6 y luego cuando se libera 3.7.
http://ubuntuhandbook.org/index.php/2017/07/install-python-3-6-1-in-ubuntu-16-04-lts/
Un breve resumen:
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
Entonces
$ 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)
Luego, para seleccionar Python 3.6 run
sudo update-alternatives --config python3
y seleccione ''2''. Entonces
$ pip3 -V
pip 8.1.1 from /usr/local/lib/python3.6/dist-packages (python 3.6)
Para actualizar pip, seleccione la versión deseada y
pip3 install --upgrade pip
$ pip3 -V
pip 9.0.1 from /usr/local/lib/python3.6/dist-packages (python 3.6)
Probado en Ubuntu 16.04.
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á utilizando Ubuntu 16.04 LTS, necesitará usar un PPA:
sudo add-apt-repository ppa:jonathonf/python-3.6 # (only for 16.04 LTS)
A continuación, 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 debe 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