所以我编写了这段代码,我使用Paramiko通过SSH连接到计算机,该脚本正常工作,但是当我使用cx_Freeze将其转换为“.exe”时,程序停止在“self.ssh.load_system_host_keys”工作,所以我从脚本中删除了该函数并且它保持正常工作(可能并不总是需要?),但是当我将脚本转换为.exe时,它是Paramiko的“self.ssh.connect”函数,现在似乎正在停止程序,我的意思是,没有异常提升,代码只是停止在那里运行而没有任何反应,任何想法?。
Paramiko和cx_Freeze有兼容性问题吗?
以下是我的代码的简化版本:
session.py (我实现了paramiko功能的类)
from paramiko import SSHClient, AutoAddPolicy
class Session:
def __init__(self, host, user, password):
self.user = user
self.password = password
self.host = host
self.is_connected = False
self.ssh = SSHClient()
self.ssh.set_missing_host_key_policy(AutoAddPolicy())
def assert_connection(self):
# force connection
time_start = time.time()
while True:
try:
self.ssh.connect(self.host, username=self.user, password=self.password)
self.is_connected = True
return True
except:
print(time.time() - time_start)
if (time.time() - time_start) > 3:
self.ssh.close()
return False
“主要”剧本
import session
import threading
def create_session(self):
self.session = session.Session(self, self.active_session.host,
self.active_session.user, self.active_session.password)
t = threading.Thread(target=self.connect_via_ssh)
t.start()
def connect_via_ssh(self):
if self.session.assert_connection():
#Do something
任何帮助将不胜感激!
修改
我无法弄清楚出了什么问题,但是我尝试使用pyinstaller,它确实有效!我打赌cx_freeze和paramiko有一些奇怪的错误。