为什么pyinstaller生成的cxüu oracle应用程序可以在新的CentOS机器上工作,而不能在安装了oracle客户端的机器上运行?

2024-05-23 15:18:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个python应用程序,它使用cx_Oracle,然后生成pyinstaller包(文件夹/单个可执行文件)。我应该注意它是在64位linux上。我有一个自定义的spec文件,其中包括Oracle客户机库,因此所需的一切都在捆绑包中。在

当我在新安装的centos7.1vm(没有安装Oracle软件)上运行捆绑的可执行文件时,该程序成功地连接到数据库并运行正常。但是,当我在另一个包含RHEL7.2的系统上安装捆绑的可执行文件并尝试运行它时,我得到

Unable to acquire Oracle environment handle.

我的理解是,这是由于Oracle客户机的安装存在某种冲突。我试着让机器上的甲骨文回家,给了我错误。这就好像程序在寻找Oracle客户机库,而不是在我捆绑客户机文件的位置。在

它似乎应该同时在两台机器上工作,或者两台机器都不能工作。我想我不清楚Python应用程序/cx_Oracle如何找到Oracle客户机库。同样,在一台安装了新操作系统的机器上,它似乎发现它们很好。你知道为什么会这样吗?在


Tags: 文件程序文件夹机器应用程序可执行文件客户机客户
1条回答
网友
1楼 · 发布于 2024-05-23 15:18:55

您可能会遇到这样一个事实:如果您在构建cx_Oracle时使用了即时客户机rpm,那么RPATH将被烧录到共享库中。您可以检查其内容并使用chrpath命令进行更改。可以在修改后的RPATH中使用特殊路径$ORIGIN来指定相对于共享库的路径。在

如果RPATH不是罪魁祸首,那么您需要检查ldd命令的输出,看看它在哪里查找,然后进行调整以使其行为正常!在

相关问题 更多 >