TL;DR
-
sudo add-apt-repository ppa:deadsnakes/ppa
がModuleNotFoundError: No module named 'apt_pkg'
で失敗する人は/usr/bin/python
,/usr/bin/python3
のシンボリックリンクを書き換えていないか、alias
を張っていないか確認、元に戻すことで解決するかも
現象の前提
-
Ubuntu20.04
onWindows10/WSL2
-
python3.8
→3.9
へのアップデート済み
# sudo apt update
# sudo apt install python3.9
現象
3.9
→3.10
にしようとしてリポジトリを追加しようとすると以下のエラーが発生
# sudo add-apt-repository ppa:deadsnakes/ppa
Traceback (most recent call last):
File "/usr/bin/add-apt-repository", line 12, in <module>
from softwareproperties.SoftwareProperties import SoftwareProperties, shortcut_handler
File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 28, in <module>
import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
原因は簡単で、python3.9
にしたときに、python
だけで起動してほしくて
$ sudo rm /usr/bin/python3
$ ln -s /usr/bin/python3.9 /usr/bin/python3
と勝手にシンボリックリンクを書き直していたからです。add-apt-repository
が参照しているpython3
の向き先が変わってしまいました。
/usr/bin/*
はよほどのことがなければいじるな、という当たり前の原因でした。alias python /usr/bin/python3.9
のような設定をしている人も同様の現象が起こるかもです。
シンボリックリンクを
$ sudo rm /usr/bin/python3
$ ln -s /usr/bin/python3.8 /usr/bin/python3
と戻してやると再現しなくなりました。その後、
$ sudo add-apt-repository ppa:deadsnakes/ppa
$ sudo apt install python3.10
でインストール完了。
(番外編)venvの作成に失敗する
以下のようになった。
$ python -m venv .venv
Error: Command '['/home/canada/work/contec/.venv/bin/python3.10', '-m', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
以下のようにpython-3.10-venv
をインストールすれば解決する
$ sudo apt install python3.10-venv