Cześć,
Fragment kodu:
try:
print(f'Start pinging: {ip}')
start_time = time()
while self.result == 1 and time() - start_time < 10:
print(f'Time: {time() - start_time}')
if self.result == 0:
break
sleep(1)
x = ip.rsplit('.')[2]
ip_s = f'192.168.{x}.248'
ip_d = ip
command = ['ping', '-S', f'{ip_s}', '-n', '2', f'{ip_d}']
result = subprocess.run(command,
timeout=timeout,
# creationflags=0x08000000,
creationflags=subprocess.DETACHED_PROCESS
# stdout=subprocess.PIPE
)
print(f'Result: {result.returncode}')
if result.returncode == 0 and b'TTL' in result.stdout:
self.ip = ip
self.result = 0
print(f'Win: {ip}')
else:
self.result = 1
except Exception as e:
print(e)
self.result = 1
Dlaczego jeśli uruchamiam ten skrypt jako skompilowany program do aplikacji - exe, to działa on inaczej niż plik wykonany przez interpreter?
Porównanie wyników:
Z pliku exe:
Z interpretera:
O co chodzi? Wykonanie z interpretera jest poprawne, dostaje odpowiedz "result" i próba jest wykonywana przez określony czas nie dłuższy niż 10 s, natomiast wersja exe nie daje żadnej odpowiedzi i nie próbuje powtarzać czynności przez określony czas 10 s.
Co może być przyczyną?
Jeśli całość jest niezrozumiała postaram się doprecyzować problem.