2017-07-29 2 views
0

Ich versuche, mein Python-Skript in eine exe Datei konvertieren, dass jeder es von jedem Computer ausführen kann, einschließlich Computer ohne Python. so sehe ich einige Anleitungen, die den besten Weg erklären, in der cx_freeze Bibliothek zu verwenden. so dass ich eine kleine GUI-Anwendung erstellt, die nur in tkinter verwenden, dies ist mein Code:Build-Python-Skript zu exe-Datei mit cx_freeze

import tkinter 
top = tkinter.Tk() 
# Code to add widgets will go here... 
top.mainloop() 

und das ist mein Setup-Datei:

from cx_Freeze import setup, Executable 
setup(
    name="GUI PROGRAM", 
    version="0.1", 
    description="MyEXE", 
    executables=[Executable("try.py", base="Win32GUI")], 
    ) 

und ich führen Sie diesen Befehl:

python setup.py build 

und ich diesen Fehler dann erhalten:

KeyError: 'TCL_LIBRARY 

und es passiert nur, wenn ich tkinter verwende. also denke ich, dass ich etwas vermisse und ich muss irgendwie den tkinter zu der Setup-Datei hinzufügen. kann mir jemand helfen? vielen Dank euch.

+0

Welche Version von Python verwenden Sie? Ich würde pyinstaller als ein Paket zur exe-Bibliothek vorschlagen ... es ist sehr einfach zu verwenden –

+0

Ich benutze in Python 3.6, und ich versuche sie und sie sind wirklich kompliziert –

+0

Nicht so schwierig wie Cx_Freeze kann ich Ihnen versichern. – Simon

Antwort

0

Versuchen Sie Ihr Setup-Skript zu dieser Änderung:

from cx_Freeze import setup, Executable 
import os 
import sys 
import os.path 

PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__)) 
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') 

files = {"include_files": ["<Path to Python>/Python36-32/DLLs/tcl86t.dll", "<Path To Python>/Python36-32/DLLs/tk86t.dll"], "packages": ["tkinter"]} 

setup(
    name="GUI PROGRAM", 
    version="0.1", 
    description="MyEXE", 
    options = {"build_exe": files}, 
    executables=[Executable("try.py", base="Win32GUI")], 
) 

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') wird die Fehlermeldung zu entfernen, während files = {"include_files": ["<Path to Python>/Python36-32/DLLs/tcl86t.dll", "<Path To Python>/Python36-32/DLLs/tk86t.dll"], "packages": ["tkinter"]} die fehlenden Tk und Tcl Runtimes sind.

+0

@Mark grün Dies ist meine aktualisierte Antwort, wenn Sie sie noch nicht gesehen haben. – Simon

Verwandte Themen