背景
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に合わせてコード修正した方が楽そう。