问题经过:
程序也写好了。也测试好了。
直接用pyinstaller打包添加 -w 隐藏窗口参数。
运行之后发现程序马上就结束了。因为exe可以被删除。而不是占用状态。
然后考虑说不隐藏窗口试试吧。结果不隐藏窗口一切正常。很奇葩的BUG啊
后来在隐藏窗口下导出异常错误内容 : 'NoneType' object has no attribute 'write'
解决方法:
其实打包之前就有所怀疑,flask一直在输出内容。
当这个命令行窗口不见了,他怎么输出呢。
再加上异常输出的内容是write写出。当然肯定不是写出日志文件的时候的问题。
因为日志文件写出了说明他没问题。不然就不会看到异常的这个内容。
最后经过程序员必备的“关键词索引技术”,成功的找到了相关答案。
解决: 在Flask初始化前显式的将标准输出重定向
import sys
import os
sys.stdout = open(os.devnull, "w") # 不保留任何标准输出
# ------- 以下为原始代码 -------
app = Flask(__name__) # ...
最后: 请注意, 该做法会导致所有依赖于标准输出的函数(方法)失效, 这其中有可能包括日志. 因此最好在输出不多的情况下写到一个文件里或者输出多时定义一个类或方法封装一下.