更改 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

这是有道理的,因为 Ubuntu 20.04 的默认 Python 版本是 Python 3.8。

谷歌搜索的直接解决方案是像这样链接名称:

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

IE:

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

我尝试在默认Python版本为3.6时重新安装相关包(apt install --reinstall python3-apt),但没有成功,而且这种链接文件的解决方案*.so不可扩展!

有没有办法让Python 3.6与系统默认的CPython包一起工作?

答案1

正如您所发现的,系统确实依赖于系统Python 的版本与预期一致。如果您确实想要一个带有 Python 3.6 的系统,那么最好的选择是找到一个使用 Python 3.6 的(理想情况下仍然受支持的)版本:在您的情况下,Ubuntu 18.04。

如果您想为 AMI 上运行的程序提供 Python 3.6,您可以考虑使用虚拟环境,而不是替换系统 Python。pyenv是一个很好的起点。

答案2

像管理您附近的物理机一样管理云上任何计算机的环境。如果您使用 Ubuntu 20.x 并且默认安装的 Python 版本是 3.8,但您需要 Python v3.6,请根据需要安装虚拟环境。你可以用 来做到这一点pyenv。您目前正在做的事情是缓慢地破坏您的默认 Python 安装,这将对该计算机上的无数软件包(基于云或非云)产生所有不利影响。

我添加一个教程如果您感兴趣的话,我写过有关 Python 环境虚拟化的文章(特别是在 参考资料pyenv)。

相关内容