使用pyinstaller创建exe后没有名为'scipy'的模块

时间:2020-06-05 19:33:58

标签: python python-3.x scipy pyinstaller

因此,我有一个脚本可以使用PIL,numpy和scipy来打印图像的主色:

from PIL import Image
import numpy as np
import scipy.cluster

def dominant_color(image):
    NUM_CLUSTERS = 5

    image = image.resize((150, 150))      # optional, to reduce time
    ar = np.asarray(image)
    shape = ar.shape
    ar = ar.reshape(np.product(shape[:2]), shape[2]).astype(float)

    codes, dist = scipy.cluster.vq.kmeans(ar, NUM_CLUSTERS)

    vecs, dist = scipy.cluster.vq.vq(ar, codes)         # assign codes
    counts, bins = np.histogram(vecs, len(codes))    # count occurrences

    index_max = np.argmax(counts)                    # find most frequent
    color = tuple([int(code) for code in codes[index_max]])
    return color

image = Image.open("image.jpg")
print(dominant_color(image))

我使用命令pyinstaller --onefile --hidden-import=scipy test.py使用pyinstaller创建了一个exe,但是即使在运行exe时使用隐藏导入,我也会得到ModuleNotFoundError: No module named 'scipy',我也曾尝试将scipy.cluster添加为隐藏导入,仍然得到相同的错误。我在这里错过了隐藏的进口商品吗?

2 个答案:

答案 0 :(得分:1)

我尝试了您的代码,并使用以下命令生成了exe

pyinstaller --onefile --hidden-import=pkg_resources.py2_warn test.py

我没有任何错误。

我的建议是先尝试使用上述命令。 如果这不起作用,则可能需要检查环境变量,以及系统中是否有可能安装多个python。

答案 1 :(得分:0)

我如何修复它:

使用以下代码在目录中创建文件:

from PyInstaller.utils.hooks import collect_submodules
from PyInstaller.utils.hooks import collect_data_files
hiddenimports = collect_submodules('scipy')

datas = collect_data_files('scipy')

然后使用--additional-hooks-dir=.newFileName.py

运行命令