Прежде всего, извините за мой плохой английский.Неудача компиляции на окнах простого скрипта python (с использованием py2exe)
Я создал сценарий, который соединяется с Mikortik RB750 и выполняет команды SSH. Когда я запускаю его (без компиляции), он работает хорошо и соответствует цели. Проблема, с которой я столкнулась, заключается в том, что при попытке скомпилировать ее на Windows происходит сбой. Работает нормально, пока не попытается запустить SSH-соединение.
Я пытаюсь скомпилировать его, используя команду python -m py2exe.build_exe ssh_menu.py
Это говорит мне, что отсутствуют 4 модуля: UserDict; GSSAPI; упаковка; Readline. Я понятия не имею, как это решить, и я много google, жалко, что это первый случай, когда я пытаюсь что-то сделать с python, и теперь я потерялся.
Вот мой код:
import os
import sys
import time
import select
import paramiko
server, username, password = ('192.168.88.1', 'admin', '976431')
comando1=" "
comando2=" "
ipUbicacion=" "
flagUbicacion=True
ipSalida=" "
flagSalida=True
addresList1=" "
miIp=input("Cual es su dirección IP: ")
while flagUbicacion:
print("""
1.ESSO Centro
2.ESSO Rotonda
3.Casa Don Oscar/Sebastian
4.Transporte Garay
5.Salir
""")
idUbicacion=input("Cual es su ubicación? ")
if idUbicacion=="1":
ipUbicacion="192.168.88.1"
flagUbicacion=False
elif idUbicacion=="2":
ipUbicacion="192.168.88.2"
flagUbicacion=False
elif idUbicacion=="3":
ipUbicacion="192.168.88.3"
flagUbicacion=False
elif idUbicacion=="4":
ipUbicacion="192.168.88.4"
flagUbicacion=False
elif idUbicacion=="5":
print("\n Programa Terminado")
idUbicacionans = None
else:
print("\n El dato ingresado no es valido")
while flagSalida:
print("""
1.Modem ESSO Centro
2.Integra ESSO Centro
3.Modem ESSO Rotonda
4.Modem Casa Don Oscar
5.10+ Transporte Garay
6.GampelCom Transporte Garay
7.Salir
""")
idSalida=input("Por cual puerta de enlace quiere salir? ")
if idSalida=="1":
ipSalida="192.168.88.1"
auxUbicacion="1"
flagSalida=False
elif idSalida=="2":
ipSalida="192.168.88.1"
auxUbicacion="1"
flagSalida=False
elif idSalida=="3":
ipSalida="192.168.88.2"
auxUbicacion="2"
flagSalida=False
elif idSalida=="4":
ipSalida="192.168.88.3"
auxUbicacion="3"
flagSalida=False
elif idSalida=="5":
ipSalida="192.168.88.4"
auxUbicacion="4"
flagSalida=False
elif idSalida=="6":
ipSalida="192.168.88.4"
auxUbicacion="4"
flagSalida=False
elif idSalida=="7":
print("\n Programa Terminado")
idSalida = None
flagSalida=False
else:
print("\n El dato ingresado no es valido")
if ipUbicacion==ipSalida:
cantComandos=1
else:
cantComandos=2
i=0
while i<cantComandos:
if idUbicacion=="1": #SI ESTOY EN LA ESSO DEL CENTRO Y...
if idSalida=="1": #...QUIERO SALIR POR EL MODEM
addresList1="WAN1"
elif idSalida=="2": #...QUIERO SALIR POR EL INTEGRA
addresList1="WAN2"
elif idSalida=="3": #...QUIERO SALIR POR RB_ROTONDA
addresList1="WAN3"
elif idSalida=="4": #...QUIERO SALIR POR RB_OSCAR
addresList1="WAN4"
elif idSalida=="5": #...QUIERO SALIR POR RB_TRANSPORTE
addresList1="WAN5"
elif idSalida=="6": #...QUIERO SALIR POR RB_TRANSPORTE
addresList1="WAN5"
if idUbicacion=="2": #SI ESTOY EN LA ESSO DE LA ROTONDA Y...
if idSalida=="1": #...QUIERO SALIR POR RB_CENTRO
addresList1="WAN2"
elif idSalida=="2": #...QUIERO SALIR POR RB_CENTRO
addresList1="WAN2"
elif idSalida=="3": #...QUIERO SALIR POR MODEM ROTONDA
addresList1="WAN1"
elif idSalida=="4": #...QUIERO SALIR POR RB_OSCAR
addresList1="WAN3"
elif idSalida=="5": #...QUIERO SALIR POR RB_TRANSPORTE
addresList1="WAN4"
elif idSalida=="6": #...QUIERO SALIR POR RB_TRANSPORTE
addresList1="WAN4"
if idUbicacion=="3": #SI ESTOY EN LA CASA DE OSCAR Y...
if idSalida=="1": #...QUIERO SALIR POR RB_CENTRO
addresList1="WAN2"
elif idSalida=="2": #...QUIERO SALIR POR RB_CENTRO
addresList1="WAN2"
elif idSalida=="3": #...QUIERO SALIR POR RB_ROTONDA
addresList1="WAN3"
elif idSalida=="4": #...QUIERO SALIR POR MODEM OSCAR
addresList1="WAN1"
elif idSalida=="5": #...QUIERO SALIR POR RB_TRANSPORTE
addresList1="WAN4"
elif idSalida=="6": #...QUIERO SALIR POR RB_TRANSPORTE
addresList1="WAN4"
if idUbicacion=="4": #SI ESTOY EN TRANSPORTE Y...
if idSalida=="1": #...QUIERO SALIR POR RB_CENTRO
addresList1="WAN3"
elif idSalida=="2": #...QUIERO SALIR POR RB_CENTRO
addresList1="WAN3"
elif idSalida=="3": #...QUIERO SALIR POR RB_ROTONDA
addresList1="WAN4"
elif idSalida=="4": #...QUIERO SALIR POR RB_OSCAR
addresList1="WAN5"
elif idSalida=="5": #...QUIERO SALIR POR 10+ TRANSPORTE
addresList1="WAN1"
elif idSalida=="6": #...QUIERO SALIR POR GAMPELCOM TRANSPORTE
addresList1="WAN2"
if i==0:
server=ipUbicacion
while True:
print ("Conectando a "+server+": Intento "+repr(i)+" de 10")
try:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(server, username=username, password=password)
print ("Conectado a "+server)
break
except paramiko.AuthenticationException:
print ("Fallo de autentificación conectando a "+server)
except:
print ("Fallo de SSH en "+server+", esperando que se inicie")
i += 1
time.sleep(1)
if i == 10:
print ("No se pudo conectar a "+server+". Conexión cancelada") % server
ssh.exec_command('ip firewall address-list remove [find where address="'+miIp+'"]')
ssh.exec_command('ip firewall address-list add list="'+addresList1+'" address="'+miIp+'"')
print('ip firewall address-list add list="'+addresList1+'" address="'+miIp+'"')
print ("Comando ejecutado, cerrando conexión SSH")
ssh.close()
time.sleep(1)
else:
server=ipSalida
while True:
print ("Conectando a "+server+": Intento "+repr(i)+" de 10")
try:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(server, username=username, password=password)
print ("Conectado a "+server)
break
except paramiko.AuthenticationException:
print ("Fallo de autentificación conectando a "+server)
except:
print ("Fallo de SSH en "+server+", esperando que se inicie")
i += 1
time.sleep(1)
if i == 10:
print ("No se pudo conectar a "+server+". Conexión cancelada") % server
ssh.exec_command('ip firewall address-list remove [find where address="'+miIp+'"]')
ssh.exec_command('ip firewall address-list add list="'+addresList1+'" address="'+miIp+'"')
print('ip firewall address-list add list="'+addresList1+'" address="'+miIp+'"')
print ("Comando ejecutado, cerrando conexión SSH")
ssh.close()
time.sleep(1)
idUbicacion=auxUbicacion
i=i+1
благодарю вас за ответ, но у меня все еще такая же ошибка [screen shot] (http://i66.tinypic.com/xknm0j.png) –
Ive думал об этом, и единственное, что я могу предложить переустанавливает 'crytography', как указывает сообщение об ошибке, лучшим вариантом для этого было бы перейти на более новую версию python (она все равно может быть той же версией, такой как 3.4, только с последним обновлением) или попробуйте вручную установить он ('pip Install --upgrade cryptography'), который может не работать – sonrad10
Я заметил, что у вас есть две строки' print («Conectando a + сервер +»: Intento »+ repr (i) +« de 10 »' вы могли бы пожалуйста, выясните, какая строка отображается в сообщении об ошибке, которое вы отправили, это может помочь найти ошибку и устранить проблему. – sonrad10