Cambiar la versión predeterminada de Python rompe Ubuntu 20.04

Cambiar la versión predeterminada de Python rompe Ubuntu 20.04

Estoy creando una AMI deubuntu 20.04(Focal Fossa), y quiero que la versión predeterminada de Python sea 3.6.

Instalé Python 3.6, también el pip correcto, y luego configuré la alternativa así:

update-alternatives --install \
  /usr/bin/python3 \
  python3 \
  /usr/bin/python3.6 \
  10

Pero luego me encuentro con muchos problemas relacionados conCPythonpaquetes, como python3-apt(apt_pkg, apt_inst), netifacesy probablemente muchos más que aún no entendí.

Todos están ubicados /usr/lib/python3/dist-packagesy los nombres de los paquetes tienen este formato:

{name}.cpython-38-x86_64-linux-gnu.so

Lo cual tiene sentido, ya que la versión Python predeterminada de Ubuntu 20.04 es Python 3.8.

La solución inmediata al buscar en Google es vincular el nombre de esta manera:

ln -s {name}.cpython-38-x86_64-linux-gnu.so {name}.so

Es decir:

ln -s apt_pkg.cpython-38-x86_64-linux-gnu.so apt_pkg.so
ln -s netifaces.cpython-38-x86_64-linux-gnu.so netifaces.so

Intenté reinstalar los paquetes relevantes ( apt install --reinstall python3-apt) cuando la versión predeterminada de Python es 3.6, pero no funcionó, ¡y esta solución de vincular los *.soarchivos no es escalable!

¿Hay alguna manera de hacer que Python 3.6 funcione con los paquetes CPython predeterminados del sistema?

Respuesta1

Como descubrió, el sistema depende de lasistemaLa versión de Python es como se espera. Si realmente desea un sistema con Python 3.6, lo mejor que puede hacer es encontrar una versión (idealmente, aún compatible) que utilice Python 3.6: en su caso, Ubuntu 18.04.

Si desea proporcionar Python 3.6 para programas que se ejecutan en su AMI, podría considerar el uso de entornos virtuales en lugar de reemplazar el sistema Python.pienves un buen lugar para empezar.

Respuesta2

Administre el entorno de cualquier máquina en la nube como lo haría con una máquina física cercana. Si trabaja con Ubuntu 20.x y su instalación predeterminada de Python es 3.8, pero necesita Python v3.6, instale un entorno virtual según sea necesario. Puedes hacer eso con pyenv. Lo que está haciendo en este momento es interrumpir su instalación predeterminada de Python en cámara lenta con todo el efecto adverso que esto tendrá en innumerables paquetes en esa máquina (basados ​​en la nube o no).

agrego untutorialEscribí sobre la virtualización de entornos Python, en caso de interés (en particular en pyenv).

información relacionada