pyinstaller 打包python 多线程程序后,程序执行的时候主线程中再起子线程,这时候系统会重新另外新打开一个程序主界面。通过搜索问题答案,应该是使用 pyinstaller -F 时把程序打包成一个单文件的可执行程序,程序使用多线程原因造成的。
解决方法官网也给出了方案,就是使用 multiprocessing 模块在main 方法前面调用 multiprocessing.freeze_support()
from multiprocessing import Process, freeze_support
def f():
print('hello world!')
if __name__ == '__main__':
freeze_support()
Process(target=f).start()
注意这个 freeze_support只需要在程序启动时候调用一次就行了,不需要反复调用。