Python 2.7 添加选项-w时出现Pyinstaller错误

Python 2.7 添加选项-w时出现Pyinstaller错误,python-2.7,pyinstaller,Python 2.7,Pyinstaller,我编写了一个python网络应用程序,它有两个组件代理和服务器。代理连接到服务器以发送数据。我使用pyinstaller将代理脚本转换为.exe文件。如果我没有添加选项-w,这将有助于隐藏控制台,代码工作正常。但是当我添加选项-w时,代码无法运行。 这是我的代理代码: def SocketConnect(Server_IP,PORT): # Create Socket try: s = socket.socket(socket.AF_INET, socket.S

我编写了一个python网络应用程序,它有两个组件代理和服务器。代理连接到服务器以发送数据。我使用pyinstaller将代理脚本转换为.exe文件。如果我没有添加选项-w,这将有助于隐藏控制台,代码工作正常。但是当我添加选项-w时,代码无法运行。 这是我的代理代码:

def SocketConnect(Server_IP,PORT):

    # Create Socket
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    except socket.error, e:
        log_file.write(time.ctime() + " : Error creating socket : %s\n" %e)
        log_file.close()
        sys.exit(1)

    # Connect
    try:
        s.connect((Server_IP, PORT))
    except socket.error, e:
        log_file.write(time.ctime() + " : Connect : %s\n" %e)
        log_file.close()
        sys.exit(1)

    # Send Data
    data = pickle.dumps({'OS':[OS()], 'CPU':[CPU()], 'DISK' : [DISK()], 'MEMORY': [MEMORY()], 'NETWORK': [NETWORK()], 'FIREWALL' : FIREWALL()})
    try:
        s.send(data)
    except socket.error, e:
        log_file.write(time.ctime() + " : Error sending data: %s\n" % e)
        log_file.close()
        sys.exit(1)

    # Close Socket
    s.close()

if __name__ == "__main__" :
    config_file = open('AgentConfig.cfg', 'r')  # Open Config File - Read
    log_file = open('Log.txt', 'a') # Open Log File - Write
    Server_IP = config_file.readline().rstrip()
    PORT = int(config_file.readline().rstrip())
    FREQUENCE = config_file.readline()

    # Check valid Server_IP & PORT
    parts = Server_IP.split(".")
    if Server_IP == '' or PORT == '' :
        log_file.write(time.ctime() + " : Server IP or Connect Port is not config !\n")
        log_file.close()
        sys.exit(1)
    elif len(parts) != 4:
        log_file.write(time.ctime() + " : Server IP is not a valid IP !\n")
        log_file.close()
        sys.exit(1)
    else :
        for item in parts:
            if not 0 <= int(item) <= 255:
                log_file.write(time.ctime() + " : Server IP is not a valid IP !\n")
                log_file.close()
                sys.exit(1)
            elif PORT not in range(0,65536) :
                log_file.write(time.ctime() + " : Port must be in range 0-65535 !\n")
                log_file.close()
                sys.exit(1)
            else :
                while True :
                    log_file = open('Log.txt', 'a') # Open Log File - Write
                    log_file.write(time.ctime() + " : Connect to Server at " + Server_IP + " : Port " + str(PORT) + "\n")
                    SocketConnect(Server_IP,PORT)
                    log_file.write(time.ctime() + " : Send data Success !\n")
                    log_file.close()
                    time.sleep(int(FREQUENCE))
这是服务器上的相关代码。它用于从客户端接收数据

def handle(self):
        # self.request is the TCP socket connected to the client
        try:
            self.data = self.request.recv(4096)
        except socket.error, e:
            log_file.write(time.ctime() + " : Error receive: %s" %e)
            log_file.close()
            sys.exit(1)

        temp_list = pickle.loads(self.data).values()

我不知道为什么会这样。pyinstaller的选项-w如何影响我的代码

服务器端的
eoferor
意味着在服务器预期之前关闭控制台会切断连接。让服务器更优雅地处理该特定错误。嗨,疯狂的物理学家,我真的不明白你在说什么。当我将服务器脚本覆盖到.exe文件时。无论是否使用控制台(pyinstaller-w或只是pyinstaller),它都可以正常工作。所以我认为问题就出在代理站点上,对吗?您会在服务器上收到一个错误,说它已到达输入的末尾。EOF表示文件结束。这意味着服务器知道套接字在另一端已关闭。是的,正如您所说的“这意味着服务器知道套接字在另一端已关闭”。发送数据后,我调用close()函数关闭套接字。但这对pyinstaller的选项-w有何影响?以及“让您的服务器更优雅地处理该特定错误”。你知道怎么做吗?
def handle(self):
        # self.request is the TCP socket connected to the client
        try:
            self.data = self.request.recv(4096)
        except socket.error, e:
            log_file.write(time.ctime() + " : Error receive: %s" %e)
            log_file.close()
            sys.exit(1)

        temp_list = pickle.loads(self.data).values()