You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3.6下tkinter转exe后paramiko SSH功能失效求助

问题描述

我用cx_Freeze把Python3.6环境里的tkinter程序打包成exe后,原本正常的paramiko SSH连接功能失效了。已经在setup.py里引入了paramiko和socket包,但未打包的程序能正常运行,求解决思路。

附上我的setup.py代码:

import cx_Freeze
from cx_Freeze import setup, Executable
import os
import sys
includes = []
include_files = ["C:\\Python36-32\\DLLs\\tcl86t.dll", "C:\\Python36-32\\DLLs\\tk86t.dll", "C:\\Gustavo\\PyCharmPortable\\new\\cpass.ico", "C:\\Gustavo\\PyCharmPortable\\new\\py2.py", "C:\\Gustavo\\PyCharmPortable\\new\\py3.py", "C:\\Gustavo\\PyCharmPortable\\new\\tn.py", "C:\\Gustavo\\PyCharmPortable\\new\\file1.csv"]
PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__))
os.environ['TCL_LIBRARY'] = "C:\\Python36-32\\tcl\\tcl8.6"
os.environ['TK_LIBRARY'] = "C:\\Python36-32\\tcl\\tk8.6"
base = 'Win32GUI' if sys.platform == 'win32' else None
setup(name='Password Change', version='0.1', description='Password Change', options={"build_exe": {"packages": ["tkinter","paramiko","PIL","socket","telnetlib"], "includes": includes, "include_files": include_files}}, executables=[Executable('cp.py', base=base)])
解决思路

我帮你整理几个针对性的排查和解决步骤,你可以一步步尝试:

  • 先搞定报错信息可视化:你现在用了base='Win32GUI',打包后的exe运行时没有控制台窗口,根本看不到具体的错误提示(比如缺了哪个模块、哪个DLL)。先把base改成None,重新打包运行,看看控制台里的具体报错,这能帮你精准定位问题。

  • 补充paramiko的隐式依赖包:cx_Freeze有时候没法自动识别paramiko的深层依赖,比如cryptography、bcrypt、pynacl这些核心依赖库。你可以在setup.py的packages里把这些都加上,同时在includes里补充paramiko的核心模块,修改后的参数大概是这样:

    includes = ["paramiko.transport", "paramiko.client", "cryptography.hazmat.backends.openssl"]
    packages = ["tkinter","paramiko","PIL","socket","telnetlib", "cryptography", "bcrypt", "pynacl"]
    
  • 手动添加cryptography的必要文件:如果还是不行,找到你Python3.6安装目录下的Lib\site-packages\cryptography文件夹,把整个文件夹复制到打包后的build\exe.win32-3.6目录里,或者在include_files里明确指定复制这个文件夹。

  • 检查OpenSSL相关DLL:paramiko底层依赖OpenSSL的动态链接库,打包后可能漏掉了。你可以去Python的DLLs目录或者系统的System32目录,找到libcrypto-1_1.dll和libssl-1_1.dll,把它们复制到打包后的exe同级目录里试试。

  • 升级cx_Freeze版本:Python3.6对应的老版本cx_Freeze对复杂库的支持可能有bug,你可以升级到适合3.6的稳定版本(比如cx_Freeze 5.1.1),重新打包测试。

内容的提问来源于stack exchange,提问作者Gustavo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:21:11