Ich stehe vor der Schwierigkeit, Python-Skript mit cx_Freeze 5.0 zu kompilieren. Das Skript kompiliert korrekt, EXE wird generiert. Bevor alle Anforderungen erfüllt wurden, wurde eine Reihe von Fehlermeldungen auf der Konsole ausgegeben. Nach dem Hinzufügen aller Anforderungen, läuft die EXE keine Ausgabe an die Konsole. Das Programm wird automatisch gestoppt, ohne etwas zu drucken. Wenn direkt aus Python führen Sie es wie erwartet funktioniert:cx_Freeze generiert EXE druckt keine Konsolenausgabe
>python testScript.py -p 12 aaa/bbb.ccc
Test script with the following params:
Namespace(input_file='aaa/bbb.ccc', param=12)
Ich denke, das Problem zu argparse Paket verwandt ich verwende.
Unten ist ein kleines Testskript und Kompilierskript, das ich geschrieben habe, das das Verhalten reproduziert.
from sys import exit, argv
import os
import argparse
if __name__ == "__main__":
parser = argparse.ArgumentParser(prog=os.path.basename(argv[0]),
description='Command line parser test.')
parser.add_argument('input_file',
metavar='path/to/file',
help='path to source file)')
parser.add_argument('-p','--param', required=False,
metavar='par',
type=int, default=1,
help='test parameter')
try:
args = parser.parse_args()
except argparse.ArgumentError:
exit("Use -h option for help on using.")
if args.input_file is None:
parser.print_usage()
exit(0)
#%% display parameters
print "Test script with the following params:"
print args
cx_Freeze Skript kompilieren:
from cx_Freeze import version, setup, Executable
import sys
print "Compilation using cx_Freeze version", version
productName = "testScript"
build_exe_options = {"packages": ["sys","os","argparse"]}
exe_options = Executable(
script = productName+".py",
targetName = productName+".exe",
base = None
)
setup(
name=productName,
version="0.0",
author="mstankie",
description="test script",
options = {"build_exe": build_exe_options},
executables=[exe_options]
)
Warum das Programm druckt nichts an der Konsole?
Dies war ein Fehler in cx_Freeze, der gerade durch die Veröffentlichung von cx_Freeze 5.0.1 heute gelöst wurde. –