"BOKU"のITな日常

62歳・文系システムエンジニアの”BOKU”は日々勉強を楽しんでます

scikit-learnのimportで「the imp module is deprecated in favour of importlib;」という警告がでました

久しぶりに「scikit-learn」を使いました。

すると、importしただけで、こんな警告が表示されます。

DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses

 翻訳してみると・・

非推奨警告:impモジュールはimportlibのために推奨されなくなりました。 代わりの使用方法については、モジュールのドキュメントを参照してください

 という意味らしい。

しかし。

impモジュールなんか、どこにも使ってないし、意味がわかりません。

よく見ると。

この警告を出しているのは、「cloudpickle.py」というソースです。

どうも、sklearn(scikit-learn)が、cloudpickleというモジュールを使ってて、そこでエラーがでてるみたいです。

そう思って、ググってみると、確かにそれらしい記事が(英語ですが)ありました。

github.com

どうも、この問題はsklearnとcloudpickleの2つのモジュールのバージョンの特定の組合せで発生する問題らしいです。

自分の環境は。

  • cloudpickle 0.6.1
  • sklearn(scikit-learn)が、0.20.0

なのですが、この組合せだけが駄目みたい。

なので。

cloudpickleを、0.5.6にダウングレードする。

もしくは、sklearn(scikit-learn)を0.20.1にする。

そうすると警告はでなくなるみたいです。

わざわざ、ダウングレードするのは悔しいので、sklearn(scikit-learn)のバージョンをあげようとしました。

が、残念ながら。

Windows環境で「pip install -U」をやっても、現時点(2018/12/19)では、0.20.0までしかあげられないのですね。

困ったもんです。

結局。

非推奨警告で、処理に影響がでることはないので、無視しとくことにしました。

そのうち、0.20.1にアップグレードできるようになるでしょう。

やれやれ。