やってしまいました
Raspberry Piに最新のPython 3.7.3をインストールした後、ログイン出来なくなってしまいました。
パスワードを入力してエンターを押すと途中で突然画面が黒くなって、もう一度パスワードを求められ... の無限ループです。
試しに、わざと間違ったパスワードを入れると「不正なパスワード」と表示されるので、パスワードは合っています。
原因(たぶん)
Python 3.7.3をインストールした後、SDカードの残量が少なくなってしまっていたので、元々入っていたPython 3.5.3をアンインストールしました。
たぶん以下のコマンドだったはずです(覚えていないですし、ログインできないので確認もできません)
$ sudo apt-get --purge autoremove Python3.5.3
このとき、Thonnyなど、いくつかのソフトもアンインストールされてしまいました。そのため、もしかしたらシステムの重要なファイルも削除されてしまったのかもしれません。実際、この後の作業でバックアップしておいたデータをRaspberry Piに戻すときコマンド関連のファイルが初期状態よりも幾つか少なかったです。
GUIではログインできないのに、なぜかCUIではログインできます。しかし、元々入っていたバージョンのPythonをインストールしようにも、やはり重要なファイルが失われたらしくインストールできません。
また、ログインできなくなる前
$ sudo rpi-update
も行ったので、こちらが原因かもしれません。
どちらにしても、特に理由がなければデフォルトでインストールされているPythonは入れたままにし、 rpi-updateは行わないほうが良いでしょう。ただし、ログインできなくて確認できないので本当にこの2つのどちらかが原因だと言い切ることはできません。
解決策
何度も言うように、ログインできないので正確な原因を突き止めることはできません。そこで、とりあえずOSを入れ直すことにしました。
データのバックアップ
OSの再インストールをするとデータが全て削除されてしまいます。そこで、WinSCPというソフトを使ってRaspberry PiにWindows PCを接続、バックアップを取っておきたいデータをWindows側にコピーしました。
今まで使っていたソフトの再インストールが面倒だという場合は、ここでそれらのデータのバックアップも取っておきましょう。
ちなみに、WindowsにSDカードを直接接続しても、ほとんどデータを見られません。~~どうやらWindowsが認識しない領域を使っているようです。~~素直にWinSCPを使いましょう。
2019.06.06 追記:
WindowsでSDカードの内容が見られないのは、使っているファイルシステムが違うからのようです。c-yanさん、ご指摘ありがとうございました。
OS再インストール
Raspberry Piを起動するとき、途中で画面に大きくRaspberry Piロゴが表示されます。ロゴが消える前にShiftキーを押すと、OS再インストールのメニューが出てくるので画面に従って再インストールを行います。
インターネット接続は、Wi-Fiではなく有線LANのほうが多少速いはずです。環境によりますが、私の場合は30分程度で完了しました。
無事再インストールできたら、初期設定を済ませます。
データを戻す
WinSCPを使って、WindowsにコピーしておいたデータをRaspberry Piに戻します。
ただし、データを戻すとき、ディレクトリ内を全削除→データをコピー ではなく、データをコピー→既に存在するものは上書きしない という方法を使ってください。ディレクトリ内を全削除→コピー だと、結局また元の状態に戻ってしまいます。
最後に
気軽に古いPythonをアンインストールしないようにしましょう。
また、
$ sudo apt-get dist-upgrade
で十分なので、rpi-updateは行わないようにしましょう。