少し前にある日突然sudo apt updateを実行したらエラーが出てきて困り果てていたのですが、解決したのでそのコマンドを残しておきます。
たしかこんな感じのエラーがでていました。
ModuleNotFoundError: No module named 'apt_pkg'
Reading package lists… Done
E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/lib/command-not-found/ -a -e /usr/lib/cnf-update-db; then /usr/lib/cnf-update-db > /dev/null; fi'
E: Sub-process returned an error code
原因はおそらくpythonのバージョンをいじったことでした。
結果的には4行のコマンドを打って解決しました。
pythonのバージョンをいじったせいだったらしい
きっかけは、ubuntuのpythonのデフォルトのバージョンを新しいものにしようとしたことでした。
参考 Ubuntu18.04にPyhton3.7を導入や設定をしよう!侍エンジニア塾ブログ(Samurai Blog) – プログラミング入門者向けサイト
この記事を参考に手順を進めると、vimを開いて
alias python3='/usr/bin/python3.8’
というのを加えるところがあるのですが、調子に乗って勝手に
alias python='/usr/bin/python3.8’
と追加したところ、おそらくアップデートの際にうまく参照できずにエラーが出たのだと思います。
エラーが出る前にsudo installでpip3をインストールしてpip3コマンドを使いまくったことも関係しているかなと思ったのですが、おそらく根本は先の1行を勝手に追加したことが原因だと思っています。
4行のコマンドを打って解決した
参考にさせていただいたページ(本当にありがとうございます)
参考 add-apt-repositoryでModuleNotFoundError: No module named ‘apt_pkg’Qiita
参考 python — ‘ModuleNotFoundError:’ apt_pkg ‘という名前のモジュールを修正する方法?Ask Ubuntu
参考 package management – Error when trying sudo apt-get update – Python related?Ask Ubuntu
私はもともとバージョン3.6がデフォルトで、3.8を新しくデフォルトにしようとしていたので、たしかこちらのコマンドで解決しました。
sudo rm -rf /usr/bin/python
sudo ln -s /usr/bin/python3.8 /usr/bin/python
sudo rm -rf /usr/bin/python3
sudo ln -s /usr/bin/python3.6 /usr/bin/python3
これらを実行した後でもpython --version
とpython3 --version
でどちらも
Python 3.8.0
とでてきたので、バージョンを新しくした意味がないということにはなっていないと思います。