一、 相關背景
之前在dockerfile里面一直使用的是python3.8(忘記為什么選擇這個版本了),想用python3.9,因為覺得3.8有點老了,而且3.9一個重要的feature,是把list作為默認的類型,不需要從typing 里面 import List作為數據類型了。
現在基于python3.8的dockerfile里面Python安裝命令如下
apt-get install -y python3.8 python3-pip && ln -s /usr/bin/python3.8 /usr/bin/python
但是如果直接把python 3.8 換成python 3.9,會發現無法安裝,找不到python3.9這個包,原因是因為ubuntu 的官方repo沒有提供3.9版本的python
二、解決方案
- 安裝python 3.9
apt-get update
apt-get install software-properties-common #
# "software-properties-common" 是一個軟件包,
# 該軟件包提供了一些常用的工具和功能,用于管理軟件源(repositories)和 PPA(Personal Package Archive)。
add-apt-repository ppa:deadsnakes/ppa
# Install py39 from deadsnakes repository
apt-get install python3.9 python3-pip
ln -s /usr/bin/python3.9 python
- 后處理
不知道為什么最后build成的image 會有一個默認的3.8的python,在dockerfile里面所安裝的python package都被和python 3.8進行了綁定,導致python 3.9 實際上沒有和安裝的package進行綁定。
解決方案是添加下面兩行代碼 強行把python和python3都指向python3.9
rm /usr/bin/python3
ln -s /usr/bin/python3.9 python3