python - tkinter प्रोग्राम cx_Freeze के साथ संकलित करता है, लेकिन प्रोग्राम लॉन्च नहीं होगा




python-3.x cx-freeze (2)

मैं इस ट्यूटोरियल के बाद एक निष्पादन योग्य बनाने की कोशिश कर रहा हूं

https://github.com/anthony-tuininga/cx_Freeze/tree/master/cx_Freeze/samples/Tkinter

कुछ tweaking के बाद मैं इस परियोजना को संकलित करने में सक्षम हूं, लेकिन जब मैं माउस लोडिंग एनीमेशन आग। Exe पर क्लिक करता हूं, लेकिन कभी भी लोड नहीं होता है। यह सवाल पहले भी पूछे जा चुके हैं लेकिन कभी हल नहीं किया गया।

कोड में तलाश शुरू करने के लिए जब आपके .exe cx_freeze के बाद काम नहीं करता है?

मेरी एप्लिकेशन फ़ाइल

from tkinter import *
from tkinter import messagebox

root = Tk()
root.title('Button')
print("something")
new = messagebox.showinfo("Title", "A tk messagebox")
root.mainloop()

मेरा सेटअप

import sys
from cx_Freeze import setup, Executable

base = None
if sys.platform == 'win32':
    base = 'Win32GUI'

executables = [
    Executable('SimpleTkApp.py', base=base)
]

setup(name='simple_Tkinter',
      version='0.1',
      description='Sample cx_Freeze Tkinter script',
      executables= [Executable("SimpleTkApp.py", base=base)])

इसके अलावा, मैं मैन्युअल रूप से बंधन / टीके पुस्तकालयों को जोड़ रहा हूं

set TK_LIBRARY=C:\...\tk8.6  etc

मेरा विन्यास: अजगर 3.7, cx_Freeze 5.1.1

किसी भी मदद की बहुत सराहना की जाएगी, मुझे यह भी नहीं पता कि इस पर शुरुआत कहां से की जाए।


कंसोल के लिए एक और भी सरल हैलो दुनिया उदाहरण लिखने की कोशिश करने के बाद (जो भी विफल रहा) मैं अपराधी के पार ठोकर खाई।

घातक अजगर त्रुटि का कारण क्या हो सकता है: initfsencoding: फ़ाइल सिस्टम कोडेक लोड करने में असमर्थ?

मेरी फ्रीज़रहोम फ़ाइल को here पाए गए कोड के साथ अपडेट करने के बाद और jpeg द्वारा प्रदान किए गए setup.py का उपयोग करके, मेरे उदाहरण ऐप ने काम किया। आपकी त्वरित प्रतिक्रिया के लिए आप दोनों को धन्यवाद।


निम्नानुसार आपको setup.py संशोधित करने का प्रयास करें:

import sys
from cx_Freeze import setup, Executable

import os
PYTHON_INSTALL_DIR = os.path.dirname(sys.executable)
os.environ['TCL_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tcl8.6')
os.environ['TK_LIBRARY'] = os.path.join(PYTHON_INSTALL_DIR, 'tcl', 'tk8.6')

include_files = [(os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'), os.path.join('lib', 'tk86t.dll')),
                 (os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll'), os.path.join('lib', 'tcl86t.dll'))]

base = None
if sys.platform == 'win32':
    base = 'Win32GUI'

executables = [Executable('SimpleTkApp.py', base=base)]

setup(name='simple_Tkinter',
      version='0.1',
      description='Sample cx_Freeze Tkinter script',
      options={'build_exe': {'include_files': include_files}},
      executables=executables)

यह cx_Freeze संस्करण 5.1.1 (वर्तमान संस्करण) के लिए काम करना चाहिए। इस संस्करण में, शामिल मॉड्यूल बिल्ड डायरेक्टरी के एक उपनिर्देशिका कार्य में हैं। यदि आप 5.0.1 या पुराने संस्करण का उपयोग करते हैं, तो सेट करें

include_files = [os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'),
                 os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll')]

बजाय।

यह भी देखें "आयात हो रहा है: DLL लोड विफल रहा: निर्दिष्ट मॉड्यूल नहीं पाया जा सका" जब tx86t.dll और tk86t.dll के साथ भी cx_Freeze का उपयोग किया जाता है और विंडोज़ के लिए cx_Freeze के साथ बनाया गया अजगर टिक्चर बाहर जोड़ा जाता है और GUI नहीं दिखाएगा

संपादित करें:

एक और समस्या यह है कि cx_Freeze में अजगर 3.7 के साथ एक बग है जिसे अभी तक ठीक नहीं किया गया है। देखें Cx_freeze Python3.7.0 दुर्घटनाग्रस्त । आप वहां बग फिक्स के लिए एक लिंक पा सकते हैं जिसे आपको मैन्युअल रूप से लागू करना चाहिए (ओपी के अनुसार यह समस्या हल हो गई है, टिप्पणियां देखें)।





cx-freeze