gpt4 book ai didi

python - Pyinstaller: cx_Oracle.InterfaceError: 无法获取 Oracle 环境句柄

转载 作者:太空宇宙 更新时间:2023-11-03 12:57:15 24 4
gpt4 key购买 nike

我有一个简单的 python 脚本,它导入 cx_Oracle,然后进行 sql 查询。从 python 运行时一切正常。我的计算机上安装了 Oracle SQL Developer,它是免费的。

然后当我用“pyinstaller main.py”编译程序时,一切都编译得很好,我也可以开始这个问题。但是一旦从该程序发出 SQL 查询,就会发生以下运行时错误:

cx_Oracle.InterfaceError: 无法获取 Oracle 环境句柄

我尝试了以下方法:

  • 将所有 .dll 和 .jar 文件从 oracle 移动到构建目录,如下所示:https://sourceforge.net/p/cx-oracle/mailman/cx-oracle-users/thread/g7nbks $tl$1@ger.gmane.org/
  • 使用 pyinstaller main.py 排除 oci.dll --exclude oci.dll option from pyinstaller
  • 检查我的 ORACLE_HOME 是否正确设置为:- C:\Users\nyname\AppData\Local\Continuum\Anaconda3\Lib\site-packages\instantclient_12_1

这些都没有用。

非常感谢任何建议,我还能做些什么。

最佳答案

我找到了解决方案:

当正常运行 pyinstaller 时,编译中会丢失一个文件。需要手动包含:

为此,您需要按如下方式编辑该行:

binaries+[('oraociei12.dll','oraociei12.dll','BINARY')],

确保 oraociei12.dll 在当前文件夹中。

block_cipher = None
a = Analysis(['LDM-shark.py'],
pathex=['C:\\Users\\dicknic\\AppData\\Local\\Home\\dev\\LDM'],
binaries=None,
datas=None,
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries+[('oraociei12.dll','oraociei12.dll','BINARY')],
a.zipfiles,
a.datas,
name='mainprogram',
debug=False,
strip=False,
upx=True,
console=True )

在第二步中,再次运行 pyinstaller,但使用 spec 文件。 pyinstaller 主程序.spec

它会起作用

关于python - Pyinstaller: cx_Oracle.InterfaceError: 无法获取 Oracle 环境句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36478831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com