Ubuntu 20.04 viene con Python 3.8. No puedo desinstalar Python 3.8 pero necesito Python 3.9
Seguí adelante e instalé Python 3.9 desde:
sudo add-apt-repositorio ppa:deadsnakes/ppa
sudo apt instalar python3.9
¿Cómo instalo pip para python 3.9?
Instalar pip usando sudo apt-get install python3-pip no funciona para mí, ya que instala pip para python 3.8
Instalar pip usando python3.9 get-pip.py da un error:
~/python_tools$ python3.9 get-pip.py Traceback (most recent call last): File "/home/ubuntu/python_tools/get-pip.py", line 23704, in <module> main() File "/home/ubuntu/python_tools/get-pip.py", line 198, in main bootstrap(tmpdir=tmpdir) File "/home/ubuntu/python_tools/get-pip.py", line 82, in bootstrap from pip._internal.cli.main import main as pip_entry_point File "<frozen zipimport>", line 259, in load_module File "/tmp/tmpkwyc8h7j/pip.zip/pip/_internal/cli/main.py", line 10, in <module> File "<frozen zipimport>", line 259, in load_module File "/tmp/tmpkwyc8h7j/pip.zip/pip/_internal/cli/autocompletion.py", line 9, in <module> File "<frozen zipimport>", line 259, in load_module File "/tmp/tmpkwyc8h7j/pip.zip/pip/_internal/cli/main_parser.py", line 7, in <module> File "<frozen zipimport>", line 259, in load_module File "/tmp/tmpkwyc8h7j/pip.zip/pip/_internal/cli/cmdoptions.py", line 18, in <module> ModuleNotFoundError: No module named 'distutils.util'Puede instalar pip para python 3.9 de la siguiente manera:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3.9 get-pip.py Es importante que use python3.9 en lugar de solo python3 , para asegurarse de que pip esté instalado para python 3.9.
Si ve algún error de permisos, es posible que deba usar
python3.9 get-pip.py --user Si obtiene un error como No module named 'distutils.util' cuando ejecuta python3.9 get-pip.py y está en una distribución de Linux basada en Debian, ejecute
sudo apt install python3.9-distutils y luego vuelva a ejecutar su comando get-pip.py . Si no está en una distribución basada en Debian, use el comando equivalente para el administrador de paquetes de su distribución.
Estas instrucciones se basan en parte en las instrucciones de instalación oficiales proporcionadas por los mantenedores de pip.
Pip se incluye de forma predeterminada en python 3.4 y versiones posteriores.
python3.9 -m pip --versionSi, por alguna razón, pip no está instalado, puede instalarlo manualmente usando get-pip:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3.9 get-pip.pyA continuación se muestran los pasos que usé para instalar en UBUNTU 16.4., agregue el prefijo SUDO si es necesario. Tuve algunos problemas al usar python en la línea de comandos, por lo que usé update-alternatives de actualización al comando predeterminado python3.9 a python , cambie la versión si es necesario.
apt update apt install software-properties-common add-apt-repository ppa:deadsnakes/ppa -y apt update apt install python3.9 update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1 curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3.9 get-pip.pySi alguien más se encuentra con un comportamiento WSL2 aparentemente extraño debido a sus pips, la sugerencia de TechDog arregló mi WSL2 Ubuntu 20.04. ¡Fue la línea de alternativas de actualización, exactamente como lo publicó TechDog, lo que funcionó!
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1Una alternativa que se basa solo en deadsnakes/ppa es instalar python3.9-venv .
sudo apt-get install python3.9-venv python3.9 -m venv venv source venv/bin/activate pip --version # pip 21.1.3 from /home/.../venv/lib/python3.9/site-packages/pip (python 3.9)Quizás sea más fácil mantener la coherencia a lo largo del tiempo, pero obligando a Virtualenv.
Este método nació de un problema en Ubuntu 18. Otras propuestas en el hilo dirigidas al objetivo de OP (20.04) no funcionaron. El script de instalación de PyPa termina en Ubuntu 18 con:
python3.9 get-pip.py # ... # AttributeError: 'HTMLParser' object has no attribute 'unescape'Esto funcionó para mí en Ubuntu 18.04:
$ python3.9 -m ensurepipeste es raro, pero es el más fácil y funciona:
export PYTHON_VERSION_SHORT=3.9 apt-get install -y python${PYTHON_VERSION_SHORT} python3-pip && \ ln -s -f /usr/bin/python${PYTHON_VERSION_SHORT} /usr/bin/python3 && \ ln -s -f /usr/bin/python${PYTHON_VERSION_SHORT} /usr/bin/python && \ ln -s -f /usr/bin/pip3 /usr/bin/pip cuando instala pip3 , está (al momento de escribir) instalado para python3.8 . pero si sobrescribe /usr/bin/python3 para vincular a python3.9 , pip3 se interpretará usando python3.9, y tendrá un pip de trabajo contra python3.9
He estado usando esto durante unos dos años sin ningún problema, pero cruzo los dedos porque no es una buena práctica en absoluto, se romperá si python3-pip y python3.9 tienen problemas de compatibilidad.