gpt4 book ai didi

Heroku中的Python cx_Oracle

转载 作者:行者123 更新时间:2023-12-03 15:03:25 26 4
gpt4 key购买 nike

我为此苦了一个星期。我正在尝试运行一个使用即时客户端版本11.2.0.3.0与远程Oracle数据库连接的python flask应用程序。

在遇到许多问题之后,我结束了使用3个buildpack,其中两个需要自定义,然后可以在Heroku中安装cx_Oracle,但是在运行代码时出现错误:

import cx_Oracle
ImportError: libaio.so.1: cannot open shared object file: No such file or directory

好吧,此错误已得到充分记录,因此我只需要这样做:
$ apt-get install libaio1 libaio-dev

但是问题是如何在Heroku App中运行apt-get?使用第三个buildpack:
github.com/heroku/heroku-buildpack-apt

其他构建包:
github.com/Maethorin/oracle-heroku-buildpack
github.com/Maethorin/heroku-buildpack-python

配置完所有内容后,我运行了一个Heroku部署,并在执行时遇到了相同的错误。我可以在Heroku部署日志中看到 heroku-buildpack-apt完成了它的工作,但是在 import cx_Oracle中遇到了同样的错误。顺便说一句,可以肯定的是,我更改了我正在使用的 fork 的python buildpack,以便在每次部署时执行 pip uninstall cx_Oracle,这样我就可以拥有一个全新的编译版本。

在这一点上,伟大的互联网不再能够帮助我。我所看到的任何地方,都可以选择安装libaio。我试图搜索有关在Heroku App中使用apt-get的信息,但所有内容都指向 heroku-buildpack-apt
我认为问题可能出在cx_Oracle无法找到已安装的libaio,我设置了很多Heroku App环境变量:
$ heroku config:set ORACLE_HOME=/app/vendor/oracle_instantclient/instantclient_11_2
$ heroku config:set LD_LIBRARY_PATH=/app/.apt/usr/lib/x86_64-linux-gnu:/app/vendor/oracle_instantclient/instantclient_11_2:/app/vendor/oracle_instantclient/instantclient_11_2/sdk:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib:/lib
$ heroku config:set LIBRARY_PATH=/app/.apt/usr/lib/x86_64-linux-gnu:/app/vendor/oracle_instantclient/instantclient_11_2:/app/vendor/oracle_instantclient/instantclient_11_2/sdk:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib:/lib
$ heroku config:set INCLUDE_PATH=/app/.apt/usr/include
$ heroku config:set PATH=/bin:/sbin:/usr/bin:/app/.apt/usr/bin
$ heroku config:set PKG_CONFIG_PATH=/app/.apt/usr/lib/x86_64-linux-gnu/pkgconfig
$ heroku config:set CPPPATH=/app/.apt/usr/include
$ heroku config:set CPATH=/app/.apt/usr/include

编辑:我忘了提及这一点:

当我在应安装libaio的位置运行 heroku run ls -la /app/.apt/usr/lib/x86_64-linux-gnu时,得到了以下信息:
drwx------ 3 u32473 dyno  4096 Dec 21  2013 .
drwx------ 3 u32473 dyno 4096 Dec 21 2013 ..
-rw------- 1 u32473 dyno 16160 May 9 2013 libaio.a
lrwxrwxrwx 1 u32473 dyno 37 May 9 2013 libaio.so -> /lib/x86_64-linux-gnu/libaio.so.1.0.1
drwx------ 2 u32473 dyno 4096 May 17 16:57 pkgconfig

但是,当我运行 heroku run ls -l /lib/x86_64-linux-gnu/libaio.so.1.0.1时,没有文件。因此,真正的问题是libaio安装在哪里?

有人可以帮助我完成这项工作吗?还是cx_Oracle的另一个很好的替代品?

谢谢!

最佳答案

我解决了这个问题...问题实际上是libaio.so的位置。

我开始寻找可以安装此lib的所有可能的位置。我在/app/.apt/lib/x86_64-linux-gnu中找到了它,而不是在/app/.apt/usr/lib/x86_64-linux-gnu认为已安装的heroku-buildpack-apt中找到了它,也没有在任何系统lib文件夹中找到它。

因此,我在LD_LIBRARY_PATH中添加了此路径,一切正常!

泰全部!

关于Heroku中的Python cx_Oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37283524/

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