当我使用pycharm运行时,我在tkinter中的程序运行良好,
当我使用pyinstaller pyinstaller -i"icon.ico" -w -F script.py
创建exe文件时,我没有错误。
我将script.exe粘贴到与我的script.py相同的文件夹中,并且在运行之后我认为步骤suprocess
他没有回答,因为我在子代理行之前有print
及其工作。
这是子进程的行:
import subprocess
from subprocess import Popen, PIPE
s = subprocess.Popen([EXE,files,'command'],shell=True, stdout=subprocess.PIPE)
编辑: 同样的问题:
s = subprocess.check_output([EXE,files,'command'],shell=True, stderr=subprocess.STDOUT)
答案 0 :(得分:6)
您可以在-w模式或--windowed下编译代码,但随后还必须分配stdin和stderr。
所以改变:
s = subprocess.Popen([EXE,files,'command'],shell=True, stdout=subprocess.PIPE)
收件人:
s = subprocess.Popen([EXE,files,'command'],shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
答案 1 :(得分:2)
通过不使用-w
命令从.py脚本生成exe文件来解决问题。
答案 2 :(得分:0)
使用此函数来获取命令的输出。与-F和-w选项一起使用:
import subprocess
def popen(cmd: str) -> str:
"""For pyinstaller -w"""
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
process = subprocess.Popen(cmd,startupinfo=startupinfo, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
return decode_utf8_fixed(process.stdout.read())
答案 3 :(得分:0)
我收到错误
[WinError 6] The handle is invalid
运行线路时
data = subprocess.check_output(['netsh', 'wlan', 'show', 'profiles']).decode('utf-8').split('\n')