• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Python(kivy) to exe

Object Storage Arubacloud
0 głosów
469 wizyt
pytanie zadane 15 lutego 2023 w Python przez tubylec01 Obywatel (1,260 p.)

Witam,

Mógłby ktoś mi powiedzieć co robię źle, w tworzeniu exe'ka z python'a z kivy?

Próbowałem robić dla jednego pliku jak i folderu, ale efekt mizerny.

Plików .spec było już kilka ale daje ostatni jaki mi został.

from kivy_deps import sdl2, glew
# -*- mode: python ; coding: utf-8 -*-

block_cipher = None


a = Analysis(
    ['main.py'],
    pathex=['D:\\00_Projects\\Python\\RFID'],
    binaries=[],
    datas=[],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    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)

a.datas += [('GUI\\GUI.kv', 'D:\\00_Projects\\Python\\RFID\\GUI\\GUI.kv', 'DATA')]

exe = EXE(
    pyz,
    a.scripts,
    [],
    exclude_binaries=True,
    name='RFIDSupport',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    console=False,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
    icon='D:\\00_Projects\\Python\\RFID\\Images\\rfid-sensor.ico',
)
coll = COLLECT(
    exe, Tree('D:\\00_Projects\\Python\\RFID\\'),
    a.binaries,
    a.zipfiles,
    a.datas,
    *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
    strip=False,
    upx=True,
    upx_exclude=[],
    name='RFIDSupport',
)

Exe'ka mi generuje niby z powodzeniem, ale po uruchomieniu jest taki komunikat:

Tak wygląda drzewko:
Główny plik to main.py, 

Może się przydać:

Funkcja read_data jest wywoływana w funkcji build(self) klasy RFID(App)

Więcej plików nie ma

1 odpowiedź

+1 głos
odpowiedź 15 lutego 2023 przez reaktywny Nałogowiec (40,970 p.)
edycja 15 lutego 2023 przez reaktywny
Widzę, że masz: GUI\\GUI.kv', 'D:\\00_Projects\\Python\\RFID\\GUI\\GUI.kv' - chyba dwa razy dodajesz ten sam plik.

A aplikacja odpalona działa bezbłędnie? Bo wygląda na sporo błędów - między innymi nieskończona rekurencja

Możesz na czas znalezienia błędu dać opcję console=True oraz w linii poleceń nie dawać --no-console

Może się przydać --debug=all
komentarz 15 lutego 2023 przez tubylec01 Obywatel (1,260 p.)
Tak, te same pliki, gdzieś w jakimś "poradniku tak widziałem"...

Tak, aplikacja działa bezbłędnie.
O którym miejscu mówisz jako nieskończona rekurencja?

Spróbuję z konsolą
komentarz 15 lutego 2023 przez reaktywny Nałogowiec (40,970 p.)
edycja 15 lutego 2023 przez reaktywny

Recursion depth exceeded - mówi, że jest zbyt wiele odwołań rekurencyjnych, przekroczono limit (domyślna wartość to ok. 1000).

Można ten limit zwiększyć np. do 3000.

import sys
sys.setrecursionlimit(3000)

ale często to efekt jakiegoś bugu w programie.

Ja bym dwa razy tego samego pliku nie dodawał :)

 

komentarz 16 lutego 2023 przez tubylec01 Obywatel (1,260 p.)
from kivy_deps import sdl2, glew
# -*- mode: python ; coding: utf-8 -*-

block_cipher = None


a = Analysis(
    ['main.py'],
    pathex=['D:\\00_Projects\\Python\\RFID'],
    binaries=[],
    datas=[],
    hiddenimports=['D:\\00_Projects\\Python\\RFID\\GUI\\GUI.kv'],
    hookspath=[],
    hooksconfig={},
    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='RFIDSupport',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    console=True,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
    icon='D:\\00_Projects\\Python\\RFID\\Images\\rfid-sensor.ico',
)
coll = COLLECT(
    exe, Tree('D:\\00_Projects\\Python\\RFID\\'),
    a.binaries,
    a.zipfiles,
    a.datas,
    *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
    strip=False,
    upx=True,
    upx_exclude=[],
    name='RFIDSupport',
)

 Z takimi ustawieniami tworzy mi jeden folder i to działa, ale plik .kv jest importowany jako hiddenimports....

Nie powinno to być dołączone jako a.datas? W ogóle trzeba ten plik wskazywać (kiedyś zrobiłem kompilacje bez wskazywania pliku kv i było dobrze(też jeden folder, ale takie same ustawienia teraz nie działają).

komentarz 16 lutego 2023 przez reaktywny Nałogowiec (40,970 p.)
Którą wersję Pyinstaller masz?

Niektórzy sygnalizują błędy w 5.7 i wracają do starszej:

pip install pyinstaller==5.6.2 --force-reinstall

-----

Ja prawie zawsze wykorzystuję opcję  --onefile. Ja nie wskazuje żadnych plików z projektu, PyInstaller sam wie które dołączyć. Dołącza się pliki z danymi: grafiki, video, pliki dźwiękowe, tekstowe jak chcesz mieć wszystko w jednej binarce.
komentarz 16 lutego 2023 przez tubylec01 Obywatel (1,260 p.)
Tak, mam 5.7, teraz chwilowo nie mam czasu ale spróbuje później.

A gdzie dołączasz sdl2 i glew w opcji --onefile?
1
komentarz 16 lutego 2023 przez reaktywny Nałogowiec (40,970 p.)
Nie robiłem dawno binarek z użyciem Kivy, ale korzystałem ostatnio np. z PyQt i nie wiem co to błędy i problemy w przypadku Pyinstaller. Wszystko się pięknie zakończyło, bez żadnych problemów.

Tu jest wątek, gdzie użytkownik zebrał linki do najlepszych odpowiedzi na SO w Twoim temacie (Kivy + Pyinstaller). Musisz poczytać.

https://stackoverflow.com/questions/69234976/how-to-convert-python-kivy-app-loader-in-to-exe
1
komentarz 16 lutego 2023 przez reaktywny Nałogowiec (40,970 p.)

Podobne pytania

0 głosów
1 odpowiedź 72 wizyt
pytanie zadane 4 grudnia 2023 w Python przez tubylec01 Obywatel (1,260 p.)
0 głosów
0 odpowiedzi 196 wizyt
pytanie zadane 5 grudnia 2020 w Python przez Miki Bywalec (2,480 p.)
0 głosów
1 odpowiedź 348 wizyt
pytanie zadane 21 listopada 2020 w Python przez Miki Bywalec (2,480 p.)

92,550 zapytań

141,394 odpowiedzi

319,522 komentarzy

61,935 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...