ORA-12638: 凭证检索失败使用 Windows 的 pyinstaller 捆绑 Python(pyQt + cx_Oracle) 应用程序

Posted

技术标签:

【中文标题】ORA-12638: 凭证检索失败使用 Windows 的 pyinstaller 捆绑 Python(pyQt + cx_Oracle) 应用程序【英文标题】:ORA-12638: Credential retrieval failed Bundling Python( pyQt + cx_Oracle) application using pyinstaller for Windows 【发布时间】:2019-07-08 12:17:00 【问题描述】:

我正在使用 pyQt 在 Windows 上构建一个 GUI 应用程序,它使用诸如 username/password@host_ip:port/db_name 之类的连接字符串查询 Oracle 数据库。现在,当我使用 python3 gui.py 运行应用程序时,它可以工作,连接到主机并提取所需的信息,但是当我将其编译为 exe 时,它​​给了我臭名昭著的 ORA-12638

我已经在互联网上搜索了解决方案,即:如何使用 pyinstaller 正确打包 cx_Oracle 应用程序并完成了以下操作:

    将 InstantClient 和 Qt DLL 添加到路径中 在与exe相同的文件夹中创建tnsnames.ora

但无济于事。当我使用python3 gui.py 运行该程序时,该程序运行良好,但在编译时会以某种方式中断。我错过了一些简单的东西吗?

【问题讨论】:

这里也有问题:github.com/oracle/python-cx_Oracle/issues/328 提问时,默认请不要同时交叉发布到其他地方。当你这样做时,你在每个地方都在说你不想在每种情况下成为社区的一部分——只是你愿意向尽可能多的地方发送垃圾邮件以获得你的答案。最好从一个开始,然后如果您在一天左右没有得到答案,请在其他地方发布。 重要的是,如果您确实需要在其他地方发帖,请将帖子的每个副本链接到其他每个副本。这允许人们帮助您检查它是否已经被回答,从而节省他们的时间。当您不在副本之间进行交叉链接时,它会向读者表明您不介意浪费志愿者的时间。 如果您确实在某个位置获得了答案,请确保在其他每个位置都添加一个自我回答。这将确保如果一个副本被删除,有用的信息将保留在问题被复制的其他地方。谢谢。 对此我深表歉意。这是一个时间敏感的问题,如果我能找到解决办法,我会回答。 【参考方案1】:

我通过将 sqlnet.ora 文件的内容更改为

解决了我的问题

SQLNET.AUTHENTICATION_SERVICES = (NONE)

而不是

SQLNET.AUTHENTICATION_SERVICES = (NTS)

我打开的对应问题:https://github.com/oracle/python-cx_Oracle/issues/328

【讨论】:

以上是关于ORA-12638: 凭证检索失败使用 Windows 的 pyinstaller 捆绑 Python(pyQt + cx_Oracle) 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

ORA-12638: 身份证明检索失败 的解决办法

转 ORA-12638: 身份证明检索失败

ORA-12638: 身份证明检索失败

ORA-12638: 身份证明检索失败 解决方法

ORA-12638: 身份证明检索失败

ORA-12638: 身份证明检索失败的解决方法