【Python】Prophet(ver0.5)がinstall出来ない問題の対処
# python # 機械学習
2020年3月4日に、v0.6が公開されています。 v0.6では、holidaysのインストールが不要になっていたり、Pandas関連のバグも直っているのでv.0.5は使用しないようにしましょう。
諸々の事情でv.0.5を使用しないと行けない方々もいらっしゃると思うので、記事はこのまま残しておきます。 (ていうかなんでv.0.5.1とか作らずにv.0.6なんだ)
エラー内容
恐らく2020年になってから問題が発生しているようです。
どうやらライブラリの依存関係が一部壊れている模様。Facebookでもこういうことあるとちょっとほっこりしますね(ぇ
from fbprophet import Prophet
ImportError Traceback (most recent call last)
~\Anaconda3\lib\site-packages\fbprophet\__init__.py in
~\Anaconda3\lib\site-packages\fbprophet\forecaster.py in
~\Anaconda3\lib\site-packages\fbprophet\make_holidays.py in
~\Anaconda3\lib\site-packages\fbprophet\hdays.py in
ImportError: cannot import name ‘easter’ from ‘holidays’ (C:\Users\me\Anaconda3\lib\site-packages\holidays\__init__.py)
GitHubにもissueとして報告されていて、近いうちに修正されるとは書いてありますが、待っていられない人に。
https://github.com/facebook/prophet/issues/1293
対処方法
ライブラリをインストール
pip install holidays==0.9.12
or
conda install holidays==0.9.11 (Anaconda等の場合は0.9.12がない)
ソース書き換え(非推奨)
私は試してはいませんが、Prophet内のソースを直接書き換える事でも対処可能なようです。 参考)https://stackoverflow.com/questions/60145006/cannot-import-name-easter-from-holidays
とはいえ、どこがどう壊れるか分かったもんじゃないので基本的には避けるべき手法ですが、どうしてもの時には…。
fbprophet/hdays.py の16行目を書き換えればよいらしいですね。
# befor from holidays import WEEKEND, HolidayBase, easter, rd
after
from holidays import WEEKEND, HolidayBase from dateutil.easter import easter from dateutil.relativedelta import relativedelta as rd
実行
import fbprophet
# INFO:matplotlib.font_manager:generated new fontManager
# ERROR:fbprophet:Importing plotly failed. Interactive plots will not work.
model = fbprophet.Prophet()
# Done!
GitHubというかオープンソースはこういうのもすぐ対処が見つかって素晴らしい。