在Ubuntu20.04容器中编译安装Python3.9(待解决)

32 篇文章 1 订阅
15 篇文章 0 订阅

目前使用以下方法安装的Python3.9可能存在bug,待解决

由于python3.8没有removeprefix和.removesuffix方法,所以考虑将部署环境切换为python3.9

但是发现在Ubuntu20.04的镜像上,无论如何也无法避免在不安装python3.8的情况下安装pip:

  • 没有python3.9-pip,只有python3-pip,而python3-pip会安装依赖python3.8
  • 通过get-pip.py安装同样缺少一个包,而安装那个包同样依赖python3.8

所以就只能通过编译安装了,因为编译安装会默认把pip也装上

# 编译安装
>>> wget https://npm.taobao.org/mirrors/python/3.9.2/Python-3.9.2.tgz
>>> tar -xzvf Python-3.9.2.tgz
>>> cd Python-3.9.2
>>> apt install --no-install-recommends gcc libc6-dev make zlib1g-dev openssl libssl-dev libffi-dev libbz2-dev liblzma-dev
>>> mkdir /usr/python3
>>> ./configure --enable-optimizations --prefix=/usr/python3
>>> make -j4
>>> make install
# 切换python3版本
>>> vim ~/.bashrc
export PATH=/usr/python3/bin:${PATH}
>>> update-alternatives --install /usr/bin/python3 python3 /usr/python3/bin/python3.9 1
>>> update-alternatives --install /usr/bin/pip3 pip3 /usr/python3/bin/pip3.9 1
# 升级pip
>>> python3 -m pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
# 清理安装环境
>>> cd ..
>>> rm -r Python-3.9.2
>>> apt remove gcc libc6-dev make zlib1g-dev openssl libssl-dev libffi-dev libbz2-dev liblzma-dev
>>> apt autoremove

在这里插入图片描述
注意:centos上libssl-dev为openssl-devel,libffi-dev为libffi-devel

切记要安装ssl的包,否则安装完成后import ssl会显示找不到,从而无法使用pip安装第三方包
切记要安装ffi的包,否则安装完成后无法使用pip安装uwsgi、flask等包

参考:
编译安装python:https://blog.csdn.net/MacwinWin/article/details/113867220
docker中永久修改环境变量: https://stackoverflow.com/a/38742545
C compiler cannot create executables:https://askubuntu.com/a/647593
no module named zlib:https://stackoverflow.com/a/6169902
SSL module is not available:https://www.mdeditor.tw/pl/gb9M

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值