Я использую pyinstaller для преобразования ".py" сценария в исполняемый файл. Скрипт принимает некоторые параметры CLI, запускает на нем модели scikit-learn и keras и возвращает прогнозы. «.Py» работает нормально, когда выполняется как «python3 Forex.py». Но когда я использую:
pyinstaller --onefile predict.py
Это выдает эту ошибку:
ModuleNotFoundError: No module named 'sklearn.neighbors._typedefs'
Но когда я делаю список pip3, я ясно вижу, что там установлен scikit-learn. После поиска переполнения стека я понял, что у pyinstaller есть проблемы при получении зависимостей второго уровня, и это можно решить, добавив библиотеку в скрытые операции импорта. Я сделал это так:
a = Analysis(['predict.py'],
pathex=['/Users/mac/Desktop/Fiverr/Clothes_Classification/Scripts'],
binaries=[],
datas=[],
hiddenimports=['sklearn.neighbors._typedefs'],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
но та же ошибка все еще там. Модель от Keras дает отличные результаты, но все модели sklearn терпят неудачу. Кроме того, я использую pickle для загрузки моделей sklearn и load_model из keras для загрузки моделей keras.
Я выполняю это так:
./predict "/Users/mac/Desktop/Fiverr/Clothes_Classification/Dataset/Images/5336-0010.jpg" "/Users/mac/Desktop/Fiverr/Clothes_Classification/Scripts/Models/"
, где даны 2 CLI, которые используются sys.argv в программе. Думаю, с ними проблем нет.
Любая помощь будет высоко оценена. Спасибо!