我正在使用pyinstaller构建我的Python工具。当我使用时:
pyinstaller --onefile start.py
我生成的start.exe可以正常工作,并且所有功能都可以使用,但是当我使用时:
pyinstaller --onefile --noconsole start.py
我的工具只会冻结此代码:
output = subprocess.run(["arp", "-a"], shell=True, stdout=subprocess.PIPE)
file.write(output.stdout.decode("utf-8"))
对于netstat和ipconfig等,我还有更多类似的东西。我无法找到为什么在打开控制台时可以正常工作,但是在关闭控制台时却无法正常工作。有人可以向我解释这是为什么,也许是一个例子。我对Python和Pyinstaller很陌生。
谢谢!
修改
将我的Python代码转换为.exe之后,“ arp -a”命令现在可以运行,但是当它到达时:
output = subprocess.Popen(["systeminfo"], shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
file.write(output.stdout.read().decode("utf-8"))
shell = True无关紧要。没有它,就没有它。
有人有什么建议吗?我有很多琐事,但是在我将pyinstaller与--noconsole命令一起使用后,它将无法正常工作。
答案 0 :(得分:0)
我发现,在pyinstaller中使用--noconsole参数时,还需要包含“ stdin =”和“ stdout =”。
我的问题已通过以下代码解决:
output = subprocess.Popen(["arp", "-a"], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
file.write(output.stdout.read().decode("utf=8"))
我希望这会帮助遇到相同问题的其他人!
感谢@PedroLobito的帮助并找到了答案的一部分!