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

使用cx_Freeze打包PySide应用时遇No module _cffi_错误求助

解决cx_Freeze打包PySide+Paramiko应用时的No module _cffi_错误

我之前打包依赖Paramiko的Python应用时也碰到过一模一样的问题!核心原因是Paramiko依赖cffi库,而cx_Freeze的自动依赖追踪机制没法完全识别到cffi的底层模块(比如_cffi_backend),导致打包后的exe找不到这些关键组件。下面是几种亲测有效的解决办法:

方法1:手动指定要包含的包

修改你的setup.py,在build_exe选项里添加packages和includes参数,强制打包时包含cffi和Paramiko相关的模块:

from cx_Freeze import setup, Executable

target = Executable(
    script="main_window.py",
    base = "Win32GUI",
    icon="images\\icon.ico"
)

setup(
    name = "DemiurgoXMLgen",
    version = "0.1",
    description = "",
    options={
        'build_exe': {
            'include_files': ['images\\'],
            # 手动添加需要打包的依赖包
            'packages': ['_cffi_backend', 'paramiko', 'cffi'],
            'includes': ['cffi']
        }
    },
    executables = [target]
)

重新运行python setup.py build,打包完成后再试试运行exe,大部分情况下这个方法就能解决问题。

方法2:直接添加cffi的底层动态库

如果方法1无效,可能是cx_Freeze没把cffi的核心动态链接库打包进去。你可以手动找到_cffi_backend.pyd文件,把它加入到include_files列表中:

from cx_Freeze import setup, Executable
import os
import cffi

# 获取_cffi_backend.pyd的绝对路径
cffi_backend_path = os.path.join(os.path.dirname(cffi.__file__), '_cffi_backend.pyd')

target = Executable(
    script="main_window.py",
    base = "Win32GUI",
    icon="images\\icon.ico"
)

setup(
    name = "DemiurgoXMLgen",
    version = "0.1",
    description = "",
    options={
        'build_exe': {
            'include_files': ['images\\', cffi_backend_path],
            'packages': ['paramiko', 'cffi']
        }
    },
    executables = [target]
)

这个操作会把_cffi_backend.pyd直接复制到打包后的build目录里,确保exe运行时能找到它。

方法3:升级依赖库版本

有些旧版本的Paramiko和cffi之间存在兼容性问题,升级到最新稳定版可能也能解决这个错误:

pip install --upgrade paramiko cffi

调试小技巧

如果还是找不到问题,可以暂时把base = "Win32GUI"注释掉,打包成控制台程序。这样运行exe时会弹出命令行窗口,显示更详细的错误信息,能帮你快速定位到底是哪个模块缺失了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:27:00