我正在创建一个Ubuntu 20.04的AMI (焦Fossa),我希望默认的Python是3.6。
我安装了Python3.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这很有道理,因为Ubuntu20.04的默认Python版本是Python3.8。
googling的即时解决方案是将名称链接如下:
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当默认的Python为3.6时,我尝试重新安装相关的软件包(apt install --reinstall python3-apt),但是它没有工作,而且链接*.so文件的解决方案是不可伸缩的!
是否有办法使Python3.6与系统的默认CPython包一起工作?
发布于 2021-06-01 10:10:13
正如您所发现的,系统确实依赖于Python的系统版本,正如它所期望的那样。如果您真的想要一个具有Python3.6的系统,最好的选择是使用Python3.6找到一个(理想的,仍然受支持的)发行版:在您的例子中,Ubuntu18.04。
如果您想为运行在AMI上的程序提供Python3.6,您可以考虑使用虚拟环境而不是替换系统Python。碧昂夫是一个很好的起点。
发布于 2021-06-01 10:11:25
管理云上任何机器的环境,就像管理您附近物理机器的环境一样。如果您使用的是Ubuntu20.x,并且默认的Python安装是3.8,但是您需要Pythonv3.6,那么可以根据需要安装一个虚拟环境。你可以用pyenv做这件事。您目前正在做的是在慢动作中破坏默认的Python安装,这将对机器上的无数包(基于云的或不基于云的包)产生所有的不利影响。
我添加了我编写的关于Python环境虚拟化的教程 (特别是在pyenv中)。
https://unix.stackexchange.com/questions/652299
复制相似问题