背景
Hugging Face Spacesでstreamlitのアプリをデプロイしてみたら、現在のページの再実行をトリガーするst.experimental_rerunでAttribute Errorのエラーが発生し、streamlitにはst.experimental_rerunは存在しない旨が告げられてしまった。
しかしローカルでこのアプリの動作確認を行ってみると、普通にst.experimental_rerunの部分を問題なく通過する。
まあまず考えるのはローカルとHugging Face Spacesでのstreamlitのバージョンが合っていないのだろうなというところである。
しかし、Hugging Face Spacesでstreamlitアプリをデプロイする時には、requirements.txtに記載されている依存ライブラリをインストールしてくれるはずだから、streamlitのバージョンは合っているはずと思った。
結論と解決策
st.experimental_rerunはstreamlitのバージョン1.38.0から廃止されており、代わりにst.rerunを使うようにすれば良い。
そもそもなぜrequirements.txtで指定したローカルと同じバージョンのstreamlitがインストールされていなかったのかというと、requirements.txtでインストールが行われた後に、Hugging Face Spacesでデフォルトに用意されているDockerfileでビルドが行われるからだった。
そのデフォルトのDockerfileにはstreamlitをバージョン1.38.0でインストールする指示が含まれており、こっちが優先されたようだった(下図)。

streamlitのバージョンを下げたDockerfileを作り、それで新しく「カスタムDocker環境」を使っても解決できますが、それだと一から環境を作り直す必要があったので、おとなしく新しいバージョンのstreamlitに合わせてコード修正した方が楽そう。