Walczę z tym przez tydzień. Próbuję uruchomić aplikację kolby Pythona, która łączy się ze zdalną bazą danych Oracle przy użyciu klienta klienckiego w wersji 11.2.0.3.0.Python cx_Oracle w Heroku
Po wielu problemów, skończyło się za pomocą 3 buildpacks, dwie z nich muszę się dostosować, a następnie mogę zainstalować cx_Oracle w Heroku, ale kiedy uruchomić kod mam błąd:
import cx_Oracle
ImportError: libaio.so.1: cannot open shared object file: No such file or directory
Cóż, ten błąd jest bardzo dobrze udokumentowane, więc po prostu potrzebne do zrobienia:
$ apt-get install libaio1 libaio-dev
Ale problem jest, jak uruchomić apt-get w Heroku App? Korzystanie z trzecią buildpack:
github.com/heroku/heroku-buildpack-apt
Pozostałe buildpacks:
github.com/Maethorin/oracle-heroku-buildpack
github.com/Maethorin/heroku-buildpack-python
Po tym wszystkim jest skonfigurowany, że prowadzona Heroku wdrożyć i dostał ten sam błąd na wykonanie. Mogłem zobaczyć w Heroku wdrożyć dziennik, że heroku-buildpack-apt
wykonał swoją pracę, ale mam ten sam błąd w import cx_Oracle
. Przy okazji, po prostu zmieniłem budowany python buildpack, który używam, aby wykonać pip uninstall cx_Oracle
przy każdym wdrożeniu, dzięki czemu mogę mieć jego świeżo skompilowaną wersję.
W tym momencie Wielki Internet nie był już w stanie mi pomóc. Gdziekolwiek spojrzałam, dostałem opcję instalacji libaio. Próbowałem szukać na temat korzystania z apt-get w Heroku App ale wszystko wskazuje na heroku-buildpack-apt
Myślę, że problem może być cx_Oracle nie może znaleźć zainstalowanego libaio i setted dużo Heroku App zmiennych środowiskowych:
$ 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
EDIT: zapomniałem o tym wspomnieć:
Kiedy uruchomić heroku run ls -la /app/.apt/usr/lib/x86_64-linux-gnu
gdzie libaio powinien być zainstalowany mam to:
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
Po uruchomieniu heroku run ls -l /lib/x86_64-linux-gnu/libaio.so.1.0.1
nie ma tam pliku. Tak więc prawdziwym problemem jest miejsce instalacji libaio?
Ktoś może mi pomóc w tej pracy? Czy istnieje inna dobra substytucja cx_Oracle?
Dzięki!
Czy jesteś w stanie sprawdzić, czy libaio rzeczywiście zainstalowano w jednym z katalogów w LD_LIBRAY_PATH? –
Zapomniałem wspomnieć, że ... będę edytować moje pytanie ... ty –