我编写了一个使用 public MyView(Context context) {
super(context);
Paint p = new Paint();// Problem is here this is local declaration
p = new Paint() // do like this and remove above line
p.setColor(Color.GREEN);
b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
}
的python应用程序,然后生成一个pyinstaller包(文件夹/单个可执行文件)。我应该注意它是在64位Linux上。我有一个包含Oracle客户端库的自定义规范文件,因此所需的一切都在捆绑中。
当我在新安装的CentOS 7.1 VM上运行捆绑的可执行文件(未安装Oracle软件)时,程序成功连接到数据库并运行且没有错误。但是,当我在另一个包含RHEL 7.2的系统上安装捆绑的可执行文件时,我尝试运行它,我得到了
无法获取Oracle环境句柄。
我的理解是,这是由于Oracle客户端安装存在某种冲突。我尝试在机器上取消设置ORACLE_HOME给我错误。它几乎就像程序在我捆绑客户端文件的位置以外的位置查找Oracle客户端库一样。
它似乎应该适用于两台机器或两台机器。我想我不清楚Python应用程序/ cx_Oracle如何找到Oracle客户端库。同样,它似乎在具有全新操作系统安装的机器上发现它们很好。关于为什么会发生这种情况的任何想法?
答案 0 :(得分:1)
您可能遇到的一件事是,如果您在构建cx_Oracle时使用了即时客户端RPM,则RPATH将被烧录到共享库中。您可以使用chrpath命令检查其内容并进行更改。您可以使用修改后的RPATH中的特殊路径$ ORIGIN来指定相对于共享库的路径。
如果RPATH不是罪魁祸首,那么你将需要检查ldd命令的输出并查看它的位置,然后调整一下以使其自身运行!