Ich erstelle ein AMI vonUbuntu 20.04(Focal Fossa), und ich möchte, dass die Standard-Python-Version 3.6 ist.
Ich habe Python 3.6 installiert, auch den richtigen Pip, und dann die Alternative wie folgt eingestellt:
update-alternatives --install \
/usr/bin/python3 \
python3 \
/usr/bin/python3.6 \
10
Aber dann stoße ich auf viele Probleme im Zusammenhang mitCPythonPakete wie python3-apt
(apt_pkg, apt_inst), netifaces
und wahrscheinlich viele mehr, die ich noch nicht bemerkt habe.
Sie befinden sich alle auf /usr/lib/python3/dist-packages
und die Paketnamen haben dieses Format:
{name}.cpython-38-x86_64-linux-gnu.so
Das ist sinnvoll, da die Standard-Python-Version von Ubuntu 20.04 Python 3.8 ist.
Die unmittelbare Lösung beim Googeln besteht darin, den Namen wie folgt zu verlinken:
ln -s {name}.cpython-38-x86_64-linux-gnu.so {name}.so
Dh:
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
Ich habe versucht, die entsprechenden Pakete ( apt install --reinstall python3-apt
) neu zu installieren, als die Standard-Python-Version 3.6 war, aber es hat nicht funktioniert und diese Lösung zum Verknüpfen der *.so
Dateien ist nicht skalierbar!
Gibt es eine Möglichkeit, Python 3.6 mit den Standard-CPython-Paketen des Systems zum Laufen zu bringen?
Antwort1
Wie Sie festgestellt haben, basiert das System auf derSystemVersion von Python ist wie erwartet. Wenn Sie wirklich ein System mit Python 3.6 möchten, suchen Sie am besten nach einer (idealerweise noch unterstützten) Version mit Python 3.6: in Ihrem Fall Ubuntu 18.04.
Wenn Sie Python 3.6 für Programme bereitstellen möchten, die auf Ihrem AMI ausgeführt werden, können Sie die Verwendung virtueller Umgebungen in Betracht ziehen, anstatt das System-Python zu ersetzen.Abonnierenist ein guter Ausgangspunkt.
Antwort2
Verwalten Sie die Umgebung jeder Maschine in der Cloud wie die einer physischen Maschine in Ihrer Nähe. Wenn Sie mit Ubuntu 20.x arbeiten und Ihre Standard-Python-Installation darauf 3.8 ist, Sie aber Python v3.6 benötigen, installieren Sie nach Bedarf eine virtuelle Umgebung. Sie können das mit tun pyenv
. Was Sie im Moment tun, ist, Ihre Standard-Python-Installation in Zeitlupe zu zerstören, mit all den negativen Auswirkungen, die dies auf unzählige Pakete auf dieser Maschine (ob cloudbasiert oder nicht) haben wird.
Ich füge hinzuLernprogrammIch habe über die Virtualisierung von Python-Umgebungen geschrieben, falls Interesse besteht (insbesondere in pyenv
).