【发布时间】:2020-07-10 08:10:35
【问题描述】:
所以我试图推送一个带有 cx_oracle 依赖项的 python api,它也需要 oracle 即时客户端,但我找不到在 pcf 上部署即时客户端的教程,有没有人这样做过或有任何示例应该做什么?欣赏一下
更新:
这是我的 .profile 的内部
LD_LIBRARY_PATH=/home/vcap/app/oracle/instantclient:${LD_LIBRARY_PATH:-}
export OCI_LIB_DIR=/home/vcap/app/oracle/instantclient
export OCI_INC_DIR=/home/vcap/app/oracle/instantclient/sdk/include
export PYTHONPATH=/home/vcap/app/vendor:$PYTHONPATH
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib
【问题讨论】:
-
只使用 zip 安装程序而不是包管理器。将文件解压缩到您的应用程序下的子文件夹中,例如
oracle/。像平常一样使用 pip 安装cx-Oracle。生成 requirements.txt。将.profile文件添加到应用程序的根目录,在其中放入export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/vcap/app/oracle/lib(或安装Oracle 客户端库的路径)。然后推送您的应用程序。.profile文件将调整库搜索路径,以便可以找到 Oracle 客户端库,它在您的应用程序启动之前运行。如果你在某个地方卡住了,请告诉我。 -
感谢您的回复,我对即时 oracle 有点困惑,所以我应该将它提取到项目文件夹中,对吗?关于 .profile 扩展文件,文件名是什么?我应该将其添加到要求中吗? @DanielMikusa
-
是的,将 Oracle Instant 客户端解压缩到项目下的子文件夹中。我喜欢打电话给我的
oracle/,但你可以随意命名。.profile是您需要用于文件的确切名称。这不是一个扩展。如果您使用的是 Windows,请确保 Windows 没有添加隐藏的扩展程序。文件名必须完全是.profile,并且需要位于项目文件夹的根目录中,您可以在其中运行cf push。 -
@DanielMikusa 感谢您的提示,我已经尝试推送它并且它成功但我在我的应用程序日志中看到了这个 cx_Oracle.DatabaseError: DPI-1047: 找不到 64 位 Oracle 客户端库: “/home/vcap/app/oracle/instantclient/libclntsh.so: 文件太短”
-
它似乎不喜欢您上传的Oracle 即时客户端库。确保您下载了 64 位 Linux 即时客户端并将其解压缩到您的应用程序中的
oracle/目录下。
标签: cx-oracle cloud-foundry instantclient push-api