我已经使用了这个compile.py设置很多次并取得了巨大的成功。我刚刚在更新了一个应用程序后发现它在python中运行良好。当我冻结它时,它不能正常运行并且不输出任何错误?
这是我的编译代码:
from cx_Freeze import setup, Executable
import sys
base = None
if sys.platform == "win32":
base = "Win32GUI"
setup( name = "MYAPP" ,
version = "0.1" ,
description = "MYAPP" ,
executables = [Executable("MYAPP.py",
icon = "s.ico",
base = base)] , )
当我删除base = base line时,.exe将启动一个输出窗口并且应用程序正确运行。如果我设置base = base来删除输出窗口,应用程序将无法正常运行?
我认为问题代码是urllib.request.urlretrieve的reporthook函数,因为它在我尝试集成此下载进度条之前没有开始执行此操作。这是我试图下载的每个文件运行的for循环的一部分。如果我在compile.py文件中设置base = base,它将下载第一个文件,然后在它达到100%后停止...
我迷路了。
感谢您的帮助!
def reporthook(blocknum, blocksize, totalsize):
percent = 0
readsofar = blocknum * blocksize
if totalsize > 0:
percent = readsofar * 1e2 / totalsize
if percent >= 100:
percent = 100
s = "\r%5.1f%% %*d / %d" % (
percent, len(str(totalsize)), readsofar, totalsize)
self.time['text'] = 'Downloading File: '+self.fn+'' + s
if readsofar >= totalsize: # near the end
sys.stderr.write("\n")
else: # total size is unknown
sys.stderr.write("read %d\n" % (readsofar,))
#UPDATE PROGRESSBAR
self.pb.config(mode="determinate")
if percent > 0:
self.dl_p = round(percent,0)
self.pb['value'] = self.dl_p
self.pb.update()
if percent > 100:
self.pb['value'] = 0
self.pb.update()
urllib.request.urlretrieve(imgs, fileSavePath, reporthook)
答案 0 :(得分:0)
Thomas K--这是问题的解决方案。
“如果你使用GUI库冻结它,所以在运行它时没有命令提示符,你根本不应该写入sys.stdout或sys.stderr。它们用于命令提示符,所以如果你没有命令提示符,它们将无法正常工作。 - Thomas K 11小时前“
谢谢!