Разверните exe Kivy с несколькими папками и файлами и TensorFlow - PullRequest
0 голосов
/ 11 июля 2020

Я пытаюсь развернуть приложение kivy на Windows с помощью PyInstaller, как в этом руководстве: Создайте пакет для Windows

Но когда я пытаюсь выполнить, он трещит sh.

Я пытаюсь использовать команду --onefile для создания.

Это моя папка в дереве:

Detector:.
│   camera.py
│   data.json
│   dataControler.py
│   gui.kv
│   Main.py
│   controle.py
│   detector.model
│   detector.spec
│
├───face_detector
│       deploy.prototxt
│       res10_300x300_ssd_iter_140000.caffemodel
│
├───icons
│       agta.jpg
│       ico.png
│       icoagta.ico
│
└───songs
        en.mp3
        ptbr.mp3

Я изменил детектор.spe c, как описано в учебнике kivy

Detector.spe c

# -*- mode: python ; coding: utf-8 -*-
from kivy.tools.packaging.pyinstaller_hooks import get_deps_minimal, get_deps_all, hookspath, runtime_hooks
block_cipher = None

a = Analysis(['Main.py'],
             pathex=['C:\\Users\\**User**\\Desktop\\detector\\Main.py'],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=hookspath(),
             runtime_hooks=runtime_hooks(),
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False,
             **get_deps_all())

pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)

coll = COLLECT(exe, Tree('detector\\'),
             a.binaries,
             a.zipfiles,
             a.datas,
             *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
             strip=False,
             upx=True,
             name='detector')
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='detector',
          debug=True,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir=None,
          console=True , icon='icons\\icoagta.ico')

Когда я запускаю de Main.py, он работает fantasti c Однако, когда я упаковал, это не работает.

Кто-нибудь знает, как решить? Я пробовал документацию, но все еще не нашел решения.

1 Ответ

0 голосов
/ 22 июля 2020

Хорошо. После многих попыток для меня решением было сделать отказ от tenorflow == 1.14 , совместимого с PyInstaller. и измените мой .spe c на

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None
from kivy_deps import sdl2, glew, gstreamer

a = Analysis(['C:\\Users\\bababa\\Desktop\\mask\\Main.py'],
             pathex=['C:\\Users\\bababa\\Desktop\\mask', 'C:\\Program Files (x86)\\Windows Kits\\10\\Redist\\ucrt\\DLLs\\x86','C:\\Program Files (x86)\\Windows Kits\\10\\Redist\\ucrt\\DLLs\\x64'],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          [],
          exclude_binaries=True,
          name='Mask',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          console=True , icon='C:\\Users\\bababa\\Desktop\\mask\\icons\\icoagta.ico')
coll = COLLECT(exe,Tree('C:\\Users\\bababa\\Desktop\\mask'),
               a.binaries,
               a.zipfiles,
               a.datas,
               *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins + gstreamer.dep_bins)],
               strip=False,
               upx=True,
               upx_exclude=[],
               name='Mask')

Теперь все работает нормально

...