SE_BOKUのまとめノート的ブログ

SE_BOKUが知ってること・勉強したこと・考えたことetc

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

目次

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」というソース

よく見ると。

この警告を出しているのは、「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にアップグレードできるようになるでしょう。

やれやれ。