Как упаковать python и кивое приложение для Raspbian Buster - PullRequest
0 голосов
/ 03 февраля 2020

В настоящее время я пишу приложение для Raspberry Pi 3, используя python3 .7 и kivy1.11.1. Я пытаюсь упаковать тестовое приложение, чтобы оно работало. Я создал простую сетку с 6 кнопками. Когда вы нажимаете на кнопку, она печатает «кнопка нажата» на экране. Я использую отдельный файл kv, чтобы выложить это, поскольку это будет более практичным, поскольку приложение развивается. Итак, у меня есть два файла, «test.py» и «Test.kv».

Я использовал pyinstaller для упаковки своего приложения, но оно не работает. Он запускается и создает исполняемый файл без ошибок. Затем я перетаскиваю свой исполняемый файл в основную папку из папки «dist», как рекомендовано в этом видео .

Моя команда:

pyinstaller --onefile --add-data "Test.kv:." test.py

У меня есть также попытался:

pyinstaller --onedir --add-data "Test.kv:." test.py

, который делает то же самое: пустое окно без виджетов, без ошибок.

Когда я пытаюсь выполнить это, ничего не происходит. Я не знаю, что не так, потому что я не получаю никаких ошибок при попытке выполнить его из терминала. Когда я делаю точно такой же процесс на windows, он работает, поэтому это не код. Иногда я думаю, что это в конечном итоге запускается, но я просто получаю пустой экран и снова без ошибок. Это заставило бы меня поверить, что это проблема чтения файла .kv.

Возможно, этот процесс не работает с kivy, и мне нужно использовать какой-то другой метод для упаковки моего приложения. Однако я также попробовал такой подход , но он оставил меня с ошибками. Я очень предпочитаю метод pyinstaller, однако я не знаю, будет ли он работать, поскольку он, похоже, не подхватывает файл .kv.

Любая помощь / совет по этому вопросу будет принята с благодарностью?

Мой файл test.spe c:

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

block_cipher = None


a = Analysis(['test.py'],
             pathex=['/home/pi/Desktop/WinTest'],
             binaries=[],
             datas=[('Test.kv', '.')],
             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,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='test',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir=None,
          console=False )

На следующем рисунке показана папка моей программы (извините за плохое качество). Мои файлы библиотеки находятся в venv / Lib / site-packages. Это где мои папки kivy / kivy_deps. Может быть проблема в том, что программа не может найти файлы моей библиотеки? Но, конечно же, если бы это было проблемой, то это привело бы к ошибке «файл не найден»? И, как было сказано ранее, я не получаю никаких ошибок.

My Program Folder

Обнаружил это в моем файле warn-text.txt

missing module named kivy.lib.vidcore_lite.egl - imported by kivy.lib.vidcore_lite (top-level), kivy.core.window.window_egl_rpi (top-level)
missing module named kivy.lib.vidcore_lite.bcm - imported by kivy.lib.vidcore_lite (top-level), kivy.core.window.window_egl_rpi (top-level)
...