PyInstaller“您可以使用`skimage.io.use_plugin`加载I / O插件”


问题内容

使用Pyinstaller打包python脚本

Pyinstaller 3.2版

操作系统:Ubuntu

Traceback (most recent call last):
  File "<string>", line 57, in <module>
  File "<string>", line 29, in feature_extract
  File "caffe/io.py", line 295, in load_image
  File "skimage/io/_io.py", line 100, in imread
  File "skimage/io/manage_plugins.py", line 194, in call_plugin
RuntimeError: No suitable plugin registered for imread.

You may load I/O plugins with the `skimage.io.use_plugin` command.  A list of all available plugins can be found using `skimage.io.plugins()`.
file_test returned -1

我一直在出错。有人可以告诉我如何解决吗?


问题答案:

问题似乎与这个github问题有关,从本质skimage.io._plugins上讲,子模块使Pyinstaller的生活变得艰难。

为了确保打包您需要的所有内容,您应该有一个包含以下内容的挂钩文件

from PyInstaller.utils.hooks import collect_data_files, collect_submodules

datas = collect_data_files("skimage.io._plugins")
hiddenimports = collect_submodules('skimage.io._plugins')

(或者,如果您已经有了一个钩子文件,请扩展currentdatashiddenimports)。