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

安装transformers库后无法通过Kerberos连接SQL Server

解决安装transformers后pyodbc Kerberos认证MSSQL失败的问题

可能的原因

  • transformers及其依赖包修改了Kerberos相关环境变量(如KRB5_CONFIG、KRB5CCNAME)
  • 依赖包与系统Kerberos库存在版本冲突,导致pyodbc调用SSPI时无法获取凭证
  • 部分依赖包加载了不同版本的加密库,干扰Kerberos认证流程

解决方案

1. 手动指定Kerberos环境变量

安装transformers后部分依赖可能覆盖或修改Kerberos相关配置,可在代码执行前手动指定正确路径:

import os
import pyodbc

def pyodbc_query(query):
    # 指定Kerberos配置文件路径(根据系统实际路径调整)
    os.environ["KRB5_CONFIG"] = "/etc/krb5.conf"
    # 指定凭证缓存路径,可通过`klist`命令查看当前有效缓存
    os.environ["KRB5CCNAME"] = "/tmp/krb5cc_1000"

    cnxn = pyodbc.connect(
        Trusted_Connection='Yes',
        Driver='{/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.2.so.0.1}',
        Server='servername',
        Database='database'
    )
    cursor = cnxn.cursor()
    cursor.execute(query)
    result = cursor.fetchall()

    return result

2. 排查冲突依赖包

通过逐步安装依赖定位问题源:

  1. 新建干净conda环境:conda create -n test_env python=3.9
  2. 安装pyodbc并测试连接:conda install pyodbc=4.0.35,确认查询函数正常运行
  3. 逐个安装transformers的依赖包(可通过pip show transformers查看依赖列表),每安装一个就测试连接,找到触发问题的包后尝试升级/降级该包版本

3. 调整包版本

尝试升级pyodbc或降级transformers版本:

  • 升级pyodbc:pip install --upgrade pyodbc
  • 降级transformers:pip install transformers==4.25.1

4. 验证系统库依赖一致性

检查pyodbc和transformers相关依赖加载的Kerberos库版本是否一致:

  1. 查看pyodbc的krb5依赖:
ldd $(python -c "import pyodbc; print(pyodbc.__file__)") | grep krb5
  1. 查看cryptography(transformers核心依赖)的krb5依赖:
ldd $(python -c "import cryptography; print(cryptography.__file__)") | grep krb5

若版本不一致,可尝试安装匹配版本的库,或通过conda安装系统级兼容包。

补充验证

执行klist命令确认当前存在有效的Kerberos票据,若票据过期重新执行kinit获取新凭证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:01:21