首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更改Python的默认版本会破坏Ubuntu20.04

更改Python的默认版本会破坏Ubuntu20.04
EN

Unix & Linux用户
提问于 2021-06-01 10:01:19
回答 2查看 5K关注 0票数 7

我正在创建一个Ubuntu 20.04的AMI (焦Fossa),我希望默认的Python是3.6。

我安装了Python3.6,也是正确的pip,然后设置如下所示的替代方案:

代码语言:javascript
运行
复制
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上,包名采用以下格式:

代码语言:javascript
运行
复制
{name}.cpython-38-x86_64-linux-gnu.so

这很有道理,因为Ubuntu20.04的默认Python版本是Python3.8。

googling的即时解决方案是将名称链接如下:

代码语言:javascript
运行
复制
ln -s {name}.cpython-38-x86_64-linux-gnu.so {name}.so

即:

代码语言:javascript
运行
复制
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包一起工作?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2021-06-01 10:10:13

正如您所发现的,系统确实依赖于Python的系统版本,正如它所期望的那样。如果您真的想要一个具有Python3.6的系统,最好的选择是使用Python3.6找到一个(理想的,仍然受支持的)发行版:在您的例子中,Ubuntu18.04。

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

票数 13
EN

Unix & Linux用户

发布于 2021-06-01 10:11:25

管理云上任何机器的环境,就像管理您附近物理机器的环境一样。如果您使用的是Ubuntu20.x,并且默认的Python安装是3.8,但是您需要Pythonv3.6,那么可以根据需要安装一个虚拟环境。你可以用pyenv做这件事。您目前正在做的是在慢动作中破坏默认的Python安装,这将对机器上的无数包(基于云的或不基于云的包)产生所有的不利影响。

我添加了我编写的关于Python环境虚拟化的教程 (特别是在pyenv中)。

票数 8
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/652299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档