2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pyinstaller でsklearn.neighbors.typedefs がnot foundと出る場合

Last updated at Posted at 2021-04-27

初投稿ですので書き方は不慣れです
アドバイスありましたらよろしくお願いします。

<要約>
scikit-learn==0.24.1 python 3.8.8 の環境下で作成したプログラムを
pyinstaller==4.3 でEXE化しようとしました。

すると、warningで
sklearn.neighbors.typedefs が not foundと が出ていました。

この改善は、

Lib\site-packages_pyinstaller_hooks_contrib\hooks\stdhooks\hook-sklearn.metrics.cluster.py
を訂正する事で改善しました。

<状況>

  1. scikit-learn==0.24.1 python 3.8.8 の環境下で作成したプログラムを
    pyinstaller==4.3 でEXE化しようとしました。
    すると、warningで
    sklearn.neighbors.typedefs が not foundと が出ていました。

  2. また、exe化に成功してもプログラムが動かない状況となりました。

  3. ライブラリーからsklearn.neighborsのフォルダー内にtypedefsを探したところ、
    それは存在しなくて_typedefsならありました。

<推定原因>
Lib\site-packages_pyinstaller_hooks_contrib\hooks\stdhooks\hook-sklearn.metrics.cluster.py
のプログラムを見ると

iddenimports = []
if is_module_satisfies("sklearn >= 0.22"):
# 0.22 and later
のsklearn >= 0.22となっています。

これが、scikit-learn >= 0.22 の誤りであると推定されます。

<原因の根拠>、
上記の本来 if文でTrue判定にならなければいけない所が、Falseとなっていた事が原因可能性

print (is_module_satisfies("sklearn >= 0.22"))
False と表示

print (is_module_satisfies("scikit-learn >= 0.22"))
True と表示

<改善内容>
<改善前>
iddenimports = []
if is_module_satisfies("sklearn >= 0.22"):
# 0.22 and later

<改善後>
iddenimports = []
if is_module_satisfies("scikit-learn >= 0.22"):
# 0.22 and later

<結果>
warningでsklearn.neighbors.typedefs が not foundと が出力されなくなりました。

<コメント>
まだ、exeファイルは起動せず
37263 INFO: Matplotlib backend "GTK3Agg": ignored
backend Gtk3Agg requires cairo
と出力されています。

次はこの確認です。

"GTK3Agg": ignored は関係ありませんでした。

起動しなかったのは、ModuleNotFoundError: No module named 'sklearn.utils._weight_vector'
が原因でした。

<解決方法> hidden-importで対応する
pyinstaller ****.py --hidden-import=sklearn.utils._weight_vector

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?