How to generate .exe of a kivymd application without console properly?

Question:

I’m trying to generating a .exe of my kivymd code. I have coded a really simple code, because i was trying to learn how to do this.

My code is as follows:

from kivymd.app import MDApp
from kivymd.uix.label import MDLabel
from kivymd.uix.screen import Screen
 
class Demo(MDApp):
    def build(self):
        self.screen = Screen()
         
        self.l1 = MDLabel(
            text = "My Label"
        )

        self.screen.add_widget(self.l1)
        return self.screen 
 
if __name__ == "__main__":
    Demo().run()

Really simple.
So i’m using a .spec like this:

# -*- mode: python ; coding: utf-8 -*-
import os
from kivy_deps import sdl2, glew
block_cipher = None
from kivymd import hooks_path as kivymd_hooks_path

current_path = os.path.abspath('.')
icon_path = os.path.join(current_path, 'imagens', 'icone.ico')

a = Analysis(['main.py'],
             pathex=[current_path],
             binaries=[],
             datas=[],
             hiddenimports=[],
             hookspath=[kivymd_hooks_path],
             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,
          [],
          *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
          name='Eaton',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir=None,
          icon=icon_path,
          console=False )

My code file name is main.py and my .spec is main.spec.
So my problem is, when I use the console=True, this code and .spec works fine and create a good .exe, but when I use console=False the aplication returns error.
If someone can help me I will be very thankful.

Asked By: Mateus Coelho

||

Answers:

Ok, I just solve the problem by deleting python 3.9.7 and installing python 6.3.6.

Answered By: Mateus Coelho

You can also try wrapping your build() method in a try/except block to catch any exceptions that might be occurring during runtime. For example:

class Demo(MDApp):
    def build(self):
        try:
            self.screen = Screen()
            self.l1 = MDLabel(text="My Label")
            self.screen.add_widget(self.l1)
            return self.screen
        except Exception as e:
            print(e)
            # or write the exception to a log file

This will print any exceptions that occur during runtime to the console, which can help you diagnose the issue.

Answered By: Karma
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.