Изменение версии Python по умолчанию приводит к поломке Ubuntu 20.04

Изменение версии Python по умолчанию приводит к поломке Ubuntu 20.04

Я создаю AMIУбунту 20.04(Focal Fossa), и я хочу, чтобы версия Python по умолчанию была 3.6.

Я установил Python 3.6, а также правильный pip, а затем настроил альтернативу следующим образом:

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

Но затем я сталкиваюсь со многими проблемами, связанными сCPythonпакеты, такие как python3-apt(apt_pkg, apt_inst), netifacesи, вероятно, многие другие, которые я пока не заметил.

Все они расположены на , /usr/lib/python3/dist-packagesа имена пакетов имеют следующий формат:

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

Это логично, поскольку версией Python по умолчанию в Ubuntu 20.04 является Python 3.8.

Непосредственное решение, найденное в Google, — это ссылка на имя следующим образом:

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

То есть:

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

Я попробовал переустановить соответствующие пакеты ( apt install --reinstall python3-apt), когда версия Python по умолчанию — 3.6, но это не сработало, а это решение по связыванию файлов *.soне масштабируется!

Есть ли способ заставить Python 3.6 работать с системными пакетами CPython по умолчанию?

решение1

Как вы обнаружили, система действительно полагается насистемаверсия Python соответствует ожиданиям. Если вы действительно хотите систему с Python 3.6, лучшим вариантом будет найти (в идеале все еще поддерживаемый) релиз, использующий Python 3.6: в вашем случае это Ubuntu 18.04.

Если вы хотите предоставить Python 3.6 для программ, работающих на вашем AMI, вы можете рассмотреть возможность использования виртуальных сред вместо замены системного Python.pyenv— хорошее место для начала.

решение2

Администрируйте среду любой машины в облаке так же, как если бы вы управляли физической машиной рядом с вами. Если вы работаете с Ubuntu 20.x и ваша установка Python по умолчанию на нем — 3.8, но вам требуется Python v3.6, установите виртуальную среду по мере необходимости. Вы можете сделать это с помощью pyenv. То, что вы делаете в данный момент, — это медленное прерывание вашей установки Python по умолчанию со всеми негативными последствиями, которые это окажет на бесчисленные пакеты на этой машине (на основе облака или нет).

Я добавляюруководствоЯ писал о виртуализации сред Python, если кому интересно (в частности в pyenv).

Связанный контент