2016-05-17 28 views
5

Bir hafta boyunca bununla mücadele ediyorum. Anında istemci sürümü 11.2.0.3.0 kullanarak uzak bir Oracle veritabanı ile bağlanmak bir python flask uygulaması çalıştırmaya çalışıyorum.Heroku'da Python cx_Oracle

sorunların bir sürü sonra ben özelleştirmek gerekir ve sonra Heroku içinde cx_Oracle yükleyebilir 3 buildpacks, ikisi kullanılarak sona erdi, ama kodu çalıştırdığınızda ben hata var:

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

Eh, bu hata çok iyi belgelenmiştir yüzden sadece yapmak için gerekli:

$ apt-get install libaio1 libaio-dev 

Ama sorun nasıl çalıştırılacağı bir Heroku Uygulaması'nda apt-get?

github.com/heroku/heroku-buildpack-apt 

diğer buildpacks: Üçüncü buildpack kullanma şeyden sonra

github.com/Maethorin/oracle-heroku-buildpack 
github.com/Maethorin/heroku-buildpack-python 

yapılandırıldığı, bir Heroku dağıtmak koşucu ve yürütme aynı hata var. Ben Heroku dağıtımında görebildiğim, heroku-buildpack-apt'un işini yaptığını ancak import cx_Oracle'da aynı hatayı aldım. Btw, emin olmak için, kullandım çatallı python buildpack değiştirdim, her dağıtımda pip uninstall cx_Oracle yapmak, böylece yeni derlenmiş bir sürümü olabilir.

Bu noktada, Büyük İnternet artık bana yardım edemedi. Baktığım her yerde, libaio'yu yükleme seçeneğim var. Ben kullanmayla ilgili arama çalıştı Heroku Uygulaması'nda apt-get ancak

herşey işaret ettiği heroku-buildpack-apt Sorun cx_Oracle yüklü libaio bulamıyorum olabileceğini düşünüyorum ve ben Heroku App ortam değişkenleri bir sürü setted:

$ 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 

DÜZENLEME:

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 
012: Ben libaio bu var yüklü gereken bir heroku run ls -la /app/.apt/usr/lib/x86_64-linux-gnu çalıştırdığınızda

: Bunu söylemeyi unutmuşum

Ancak heroku run ls -l /lib/x86_64-linux-gnu/libaio.so.1.0.1 çalıştırdığımda orada dosya yok. Yani asıl sorun libaio'nun nerede kurulduğu.

Bu işi yapmama yardımcı olabilecek herkes var mı? Ya da cx_Oracle için başka bir iyi ikame var mı?

Teşekkürler!

+0

gerçekte LD_LIBRAY_PATH içinde dizinleri birine yüklendiğini libaio doğrulamak yapabiliyor musunuz? –

+0

Ben ty –

cevap

0

tekrar deneyin Bunu çözmek ... Sorun gerçekten libaio.so yeri oldu.

Bu lib'in yüklenebileceği tüm olasılıkları aramaya başladım. Ben /app/.apt/lib/x86_64-linux-gnu içinde bulundu ve , heroku-buildpack-apt yüklü olduğunu düşündüm, ne de sistem lib klasörleri herhangi birinde bulundu.

Bu yolu LD_LIBRARY_PATH'a ekledim ve her şey yolunda gidiyor!

Ty All !!!

-1

seti DYLD_LIBRARY_PATH = $ ORACLE_HOME ve LD_LIBRARY_PATH = $ ORACLE_HOME ve

+0

LD_LIBRARY_PATH zaten ayarlanmış ediliyor ... bu ... Sorumu düzenleyeceksiniz söylemeyi unutmuşum. Ve DYLD_LIBRARY_PATH sadece, OS X tarafından değil kullanılır? –

+0

evet LD_LIBRARY_PATH – Kiran

+0

olurdu linux için, sadece MAC OS için şu Zaten çok ORACLE_HOME ayarlayın: 'Heroku yapılandırma: set ORACLE_HOME =/app/satıcı/oracle_instantclient/instantclient_11_2' soruya bu ekleyin. Oracle dizinlere –