Как проект на python с применением tenserflow скомпилировать в файл exe. И возможно ли это вообще

уважаемые пользователи. У меня возникла необходимость проект на базе ImageAI(код взял прям с документации), который использует tenserflow, keras и другие зависимости, упаковать в exe файл. Проблема в том что, пока что у меня это не получилось, использовал библиотеку pyinstaller. Но с ней у меня проблема в том что не удается создать корректный exe файл.Exe файл закрывается за доли секунды. Вся надежда только на вас. Краткая суть программы: Программа берет фото, и ищет объекты на этом фото, по типу как людей, машины и т.д. Выделяет найденные объекты и возвращает, уже новое фото, но с выделенными объектами.

Теперь более подробно, вот сам код:

from imageai.Detection import ObjectDetection
import easygui
import os


path = easygui.fileopenbox();
print(path);

exec_path = os.getcwd()

detector = ObjectDetection()
detector.setModelTypeAsRetinaNet()
detector.setModelPath(os.path.join(exec_path, "resnet50_coco_best_v2.0.1.h5"))
detector.loadModel()


list = detector.detectObjectsFromImage(
    input_image = os.path.join(exec_path, path),
    output_image_path= os.path.join(exec_path, "new_objects.jpg"),
    minimum_percentage_probability = 60)

Использую виртуальную среду virtual env, для того чтобы хранить все зависимости там, и ничего лишнего. Сначала пробовал упаковать так: pyinstaller detect.py, то есть самая обычно упаковка, вот на это я получил предупреждений о том что нужные tenserflow файлы найдены не были, например вот эти:

166260 WARNING: Hidden import "tensorflow_core._api.v1.compat.v1.keras.mixed_precision" not found!
166440 WARNING: Hidden import "tensorflow_core._api.v1.compat.v2.keras.callbacks" not found!
166615 WARNING: Hidden import "tensorflow_core._api.v1.compat.v1.estimator" not found!
166626 WARNING: Hidden import "tensorflow_core._api.v1.compat.v1.estimator.tpu" not found!
168300 WARNING: Hidden import "tensorflow_core._api.v1.compat.v1.keras.estimator" not found!
168307 WARNING: Hidden import "tensorflow_core._api.v1.compat.v1.keras.applications.nasnet" not found!
168839 WARNING: Hidden import "tensorflow_core._api.v1.compat.v1.keras.activations" not found!
168854 WARNING: Hidden import "tensorflow_core._api.v1.compat.v1.keras.preprocessing.text" not found!
169538 WARNING: Hidden import "tensorflow_core._api.v1.compat.v1.keras.metrics" not found!
169711 WARNING: Hidden import "tensorflow_core._api.v1.compat.v1.keras.applications.inception_v3" not found!
169815 WARNING: Hidden import "tensorflow_core._api.v1.compat.v1.keras.datasets.cifar10" not found!

А так же какие-то проблемы в синтаксисе библиотеки(хотя код работает корректно):

 Traceback (most recent call last):
  File "<string>", line 21, in walk_packages
  File "c:\users\sleping\appdata\local\programs\python\python37-32\lib\site-packages\notebook\terminal\__init__.py", line 4, in <module>
    import terminado
  File "c:\users\sleping\appdata\local\programs\python\python37-32\lib\site-packages\terminado\__init__.py", line 7, in <module>
    from .websocket import TermSocket
  File "c:\users\sleping\appdata\local\programs\python\python37-32\lib\site-packages\terminado\websocket.py", line 18, in <module>
    import tornado.web
  File "c:\users\sleping\appdata\local\programs\python\python37-32\lib\site-packages\tornado\web.py", line 84, in <module>
    from tornado.concurrent import Future, future_set_result_unless_cancelled
  File "c:\users\sleping\appdata\local\programs\python\python37-32\lib\site-packages\tornado\concurrent.py", line 28, in <module>
    import asyncio
  File "c:\users\sleping\appdata\local\programs\python\python37-32\lib\site-packages\asyncio\__init__.py", line 21, in <module>
    from .base_events import *
  File "c:\users\sleping\appdata\local\programs\python\python37-32\lib\site-packages\asyncio\base_events.py", line 296
    future = tasks.async(future, loop=self)
                       ^
SyntaxError: invalid syntax

И все в таком, духе, после этого я понял что нужно подключить спрятанные импорты и сразу подключить модель(yolo.h5), что собственно и сделал:

pyinstaller --paths ..\env\Lib\site-packages --add-data yolo.h5;. --hidden-import=h5py;. --hidden-import=h5py.defs --hidden-import=h5py.utils --hidden-import=h5py.h5ac --hidden-import=h5py._proxy detect.py

К сожалению результат все так же, неутешительный, хоть и пропало сообщений об отсутствие tenserflow, и некоторые другие ошибки тоже пропали, на их место появились новые такие как:

241397 WARNING: Hidden import "pkg_resources.py2_warn" not found!
241417 WARNING: Hidden import "pkg_resources.markers" not found!

или же

255797 WARNING: lib not found: libopenblas.QVLO2T66WEPI7JZ63PS3HMOHFEY472BC.gfortran-win_amd64.dll dependency of C:\bitwise\pyinstaller_demo\env\Lib\site-packages\numpy\core\_multiarray_umath.cp37-win_amd64.pyd

И проблемы с invalid syntax, так же остались, точно такой же, который выше.

Подводя итог, мне жаль что вопрос получился настолько большим, я за это я прошу прощения. Но мне кровь из носу нужен это exe файл, прям очень сильно нужен. Какие варианты решения есть? Возможно ли вообще, упаковать такой проект в exe файл? Если да, то какими средствами это возможно? Или возможно решить проблему с помощью pyinstaller? Заранее Благодарю всех, ответит.

P.S. Вот зависимости которые я ставил: tensorflow==2.4.0, keras==2.4.3, numpy==1.19.3, pillow==7.0.0, scipy==1.4.1, h5py==2.10.0, matplotlib==3.3.2, opencv-python, keras-resnet==0.2.0, imageai


Ответы (0 шт):