【问题标题】:cx oracle python interface error : unable to acquire oracle environment handlecx oracle python接口错误:无法获取oracle环境句柄
【发布时间】:2018-02-02 21:27:49
【问题描述】:

我用 Python 2.7.11 编写的程序有很大问题。

当从 PyCharm IDE 执行程序时,一切正常。然后我使用 pyinstaller 为 Windows 最大化 .exe。运行 .exe 文件只会出现一个错误:

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

这个问题与其他问题不同,因为在 python 环境中一切都很好。只制作 .exe 会报错。

my path variable on windows

【问题讨论】:

    标签: python oracle pyinstaller cx-oracle


    【解决方案1】:

    为了使 cx_Oracle 工作,需要一个 Oracle 客户端。最简单的方法是安装 Oracle 即时客户端,可以在这里找到:

    http://www.oracle.com/technetwork/database/features/instant-client/index.html

    确保您按照适用于您平台的页面上的说明进行操作。

    【讨论】:

    • 您的意思是下载、解压缩并设置 PATH(在 Windows 上)?我已经做了。如果不这样做,nofing 就可以了。你还有其他想法吗?当我从 python 环境运行程序时,一切正常。所以我想PATH是可以的。问题是,通过 Pyinstaller 将我的 .py 程序编译为 .exe 后,我收到此错误:无法获取 Oracle 环境句柄。
    • 通常 PyInstaller 用于使应用程序能够在另一台计算机上运行——可能没有安装 Oracle 即时客户端。我能想到的唯一另一件事是 PyInstaller 正在处理事情。您可以在应用程序的开头添加一些代码,以显示环境中的内容以及正在导入的 cx_Oracle。确保即时客户端 DLL(oci.dll 和朋友)包含在 PyInstaller 包中。您也可以尝试 cx_Freeze 和 py2exe,它们的工作方式不同。
    【解决方案2】:

    将 ORACLE_HOME、ORACLE_BASE 和 LD_LIBRARY_PATH 设置为正确的值。之后它对我有用。

    【讨论】:

      【解决方案3】:

      确保您有即时客户端的 PATH 变量。

      尝试使用 Pyinstaller不带参数

      制作 .exe 文件
      Pyinstaller prog_name.py
      

      然后删除 OCI.dll 从dist文件夹并尝试运行.exe

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-08
        • 1970-01-01
        • 1970-01-01
        • 2017-08-17
        • 2018-06-08
        • 2010-11-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多