所以我编写了这段代码,我使用 Paramiko 通过 SSH 连接到计算机,脚本正常工作,但是当我使用 cx_Freeze 将其转换为“.exe”时,程序在“self.ssh.load_system_host_keys”处停止工作,所以我从脚本中删除该函数,它继续照常工作(也许并不总是需要?),但话又说回来,当我将脚本转换为 .exe 时,它是 Paramiko 的“self.ssh.connect”函数,现在似乎停止程序,我的意思是,不会引发异常,代码只是停止运行,什么也没有发生,有什么想法吗?
Paramiko 和 cx_Freeze 是否存在兼容性问题?
这是我的代码的简化版本:
会话.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
任何帮助将非常感激!
Edit:
我无法弄清楚出了什么问题,但是我尝试使用 pyinstaller,它确实有效!我敢打赌 cx_freeze 和 paramiko 有一些奇怪的错误。