sudo apt updateでエラーがでるようになった

少し前にある日突然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 --versionpython3 --versionでどちらも

Python 3.8.0

とでてきたので、バージョンを新しくした意味がないということにはなっていないと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です