Heroku中的Python cx_Oracle

马西奥·杜阿尔特

我为此挣扎了一个星期。我正在尝试运行一个使用即时客户端版本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顺便说一句,可以肯定的是,我更改了我正在使用的分叉的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

编辑:我忘了提一下:

当我运行一个heroku run ls -la /app/.apt/usr/lib/x86_64-linux-gnu应该安装libaio位置时,我得到了以下信息:

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,一切正常!

泰全部!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python cx_Oracle更新

来自分类Dev

Python cx_Oracle。用executemany()撞头

来自分类Dev

python cx_Oracle 连接远程错误

来自分类Dev

python无法识别cx_Oracle

来自分类Dev

使用Python设置cx_Oracle环境变量

来自分类Dev

python在cygwin上导入cx_Oracle错误

来自分类Dev

屏幕窗口中的Python脚本,cx_oracle错误

来自分类Dev

对于cx_Oracle,在Python中将日期绑定到SQL

来自分类Dev

python在cygwin上导入cx_Oracle错误

来自分类Dev

如何在假脱机中使用python cx_Oracle

来自分类Dev

python cx_Oracle绑定非法变量名

来自分类Dev

Windows:cx_Oracle 5.3 安装与 Python (Anaconda) 冲突

来自分类Dev

在cx_Oracle中调用自定义函数

来自分类Dev

如何在包含“@”符号的 cx_Oracle 中接受密码

来自分类Dev

如何使用Python cx_Oracle从US7ASCII Oracle中读取国家字符(> 127)?

来自分类Dev

使用python连接到Oracle数据库(cx_oracle)

来自分类Dev

使用python cx_oracle将数据导入到oracle

来自分类Dev

Python 使用 cx_Oracle 在 Oracle BD 中导入/插入 CSV(无标题)

来自分类Dev

使用 cx_Oracle 将完整的 python 列表推送到 oracle db

来自分类Dev

无法用python的cx_Oracle连接oracle远程数据库

来自分类Dev

使用 cx_Oracle executemany() 从 Python 列表/字典批量插入 Oracle 数据库

来自分类Dev

Ubuntu中的cx_Oracle:distutils.errors.DistutilsSetupError:找不到Oracle软件安装

来自分类Dev

在 python cx_Oracle DatabaseError DPI-1004 中捕获:无法获取错误消息

来自分类Dev

使用cx_Oracle中csv文件中的变量更新数据库

来自分类Dev

Python Anaconda-命令窗口中出现“导入cx_Oracle”错误

来自分类Dev

在Python中使用cx_Oracle和xlrd的带有列表列表的executemany()返回TypeError

来自分类Dev

Windows上是否没有用于Python 3.5的cx_Oracle?

来自分类Dev

使用Python和cx_Oracle是否可以进行空间查询?

来自分类Dev

数据库:使用cx_oracle通过python检查数据类型

Related 相关文章

  1. 1

    Python cx_Oracle更新

  2. 2

    Python cx_Oracle。用executemany()撞头

  3. 3

    python cx_Oracle 连接远程错误

  4. 4

    python无法识别cx_Oracle

  5. 5

    使用Python设置cx_Oracle环境变量

  6. 6

    python在cygwin上导入cx_Oracle错误

  7. 7

    屏幕窗口中的Python脚本,cx_oracle错误

  8. 8

    对于cx_Oracle,在Python中将日期绑定到SQL

  9. 9

    python在cygwin上导入cx_Oracle错误

  10. 10

    如何在假脱机中使用python cx_Oracle

  11. 11

    python cx_Oracle绑定非法变量名

  12. 12

    Windows:cx_Oracle 5.3 安装与 Python (Anaconda) 冲突

  13. 13

    在cx_Oracle中调用自定义函数

  14. 14

    如何在包含“@”符号的 cx_Oracle 中接受密码

  15. 15

    如何使用Python cx_Oracle从US7ASCII Oracle中读取国家字符(> 127)?

  16. 16

    使用python连接到Oracle数据库(cx_oracle)

  17. 17

    使用python cx_oracle将数据导入到oracle

  18. 18

    Python 使用 cx_Oracle 在 Oracle BD 中导入/插入 CSV(无标题)

  19. 19

    使用 cx_Oracle 将完整的 python 列表推送到 oracle db

  20. 20

    无法用python的cx_Oracle连接oracle远程数据库

  21. 21

    使用 cx_Oracle executemany() 从 Python 列表/字典批量插入 Oracle 数据库

  22. 22

    Ubuntu中的cx_Oracle:distutils.errors.DistutilsSetupError:找不到Oracle软件安装

  23. 23

    在 python cx_Oracle DatabaseError DPI-1004 中捕获:无法获取错误消息

  24. 24

    使用cx_Oracle中csv文件中的变量更新数据库

  25. 25

    Python Anaconda-命令窗口中出现“导入cx_Oracle”错误

  26. 26

    在Python中使用cx_Oracle和xlrd的带有列表列表的executemany()返回TypeError

  27. 27

    Windows上是否没有用于Python 3.5的cx_Oracle?

  28. 28

    使用Python和cx_Oracle是否可以进行空间查询?

  29. 29

    数据库:使用cx_oracle通过python检查数据类型

热门标签

归档