명령 프롬프트에서 실행할 때 내 파이썬 프로그램이 올바르게 작동하지만 exe로 내보낼 때 제대로 작동하지 않는 문제가 있습니다. 특히 나는이 부분의 코드에 문제가 있어요, 아마이이 일을 더 나은 방법이 올바르게 명령 프롬프트에서CMD에서 작동하는 파이썬 프로그램 .exe로 내 보낸 경우가 아닙니다.
def select_pcb_num(self, boardDrawingNumber):
xTuple = XTuple()
temp = xTuple.find_pcb_item_number(boardDrawingNumber)
if len(temp)>1:
iSelect = int(0)
rawChar = ''
query = '{0} variants found, select correct board [up/down]: {1}\t\t\t\t'
sys.stdout.write(query.format(len(temp), temp[iSelect]))
rawChar = msvcrt.getch()
while not rawChar == '\r':
if ord(rawChar) == int(72): # upkey
iSelect = (iSelect + 1)%len(temp)
elif ord(rawChar) == int(80): # downkey
iSelect = (iSelect - 1)%len(temp)
sys.stdout.write('\r')
sys.stdout.write(query.format(len(temp), temp[iSelect]))
rawChar = msvcrt.getch()
sys.stdout.write('\n')
return temp[iSelect]
else:
return temp
을? : 행의 시작 부분에 반환하고 그 위에 기록 위쪽 또는 아래쪽 화살표를 누르면. 그러나 exe로 내 보내면 같은 줄이 다시 인쇄되고 올바른 줄이 인쇄됩니다. 예제 그림을 보아라. 빨간색 화살표가있는 줄은 인쇄되지 않아야한다. 선택이 없기 때문에 '\ n'에 도착하지 않았기 때문에 새로운 줄이 없어야한다.
는업데이트 : 상기 방법에 repr (인쇄 입력) 모양의 아래쪽 화살표 그것을 EXE 파일로 컴파일 한 이유 'P'로서 '\의 xe0'등 및보다 먼저 레지스터를 누르면 이거 야? 이 새로운 라인을 추가 왜이 while 루프
입력의'repr' 버전을 인쇄하여 실제 입력 내용을 확인하십시오. –
".exe로 내 보낸"방법을 지정할 수도 있습니다. Pyinstaller를 사용하여 .exe로 내 보낸 – geoffspear
도 py2exe 같은 결과를 보았습니다. –