Sono alle prese con questo per una settimana. Sto provando a eseguire un'app di fiaschetta python che si connette a un database Oracle remoto utilizzando la versione 11.2.0.3.0 del client istantaneo.Python cx_Oracle in Heroku
Dopo un sacco di problemi, ho finito con 3 buildpacks, due dei quali ho bisogno di personalizzare e quindi ho potuto installare cx_Oracle in Heroku, ma quando ho eseguito il codice che ho ottenuto l'errore:
import cx_Oracle
ImportError: libaio.so.1: cannot open shared object file: No such file or directory
bene, questo errore è molto ben documentato, quindi ho solo bisogno di fare:
$ apt-get install libaio1 libaio-dev
Ma il problema è come eseguire apt-get in un App Heroku? Utilizzando il terzo buildpack:
github.com/heroku/heroku-buildpack-apt
Gli altri buildpacks:
github.com/Maethorin/oracle-heroku-buildpack
github.com/Maethorin/heroku-buildpack-python
Dopo tutto è configurato, ho gestito un Heroku distribuire e ottenuto lo stesso errore in esecuzione. Ho potuto vedere nel registro di Heroku che heroku-buildpack-apt
ha fatto il suo lavoro ma ho ricevuto lo stesso errore in import cx_Oracle
. Però, per sicurezza, ho modificato il pacchetto di python bifronte, che sto usando, per fare pip uninstall cx_Oracle
ad ogni deploy, così posso averne una versione appena compilata.
A questo punto, la Grande Internet non è stata in grado di aiutarmi più. Ovunque guardassi, ho avuto l'opzione di installare libaio. Ho provato a cercare di usare apt-get in Heroku App, ma tutto fa pensare a heroku-buildpack-apt
Credo che il problema potrebbe essere cx_Oracle non riesce a trovare il libaio installato e ho Fondai un sacco di variabili d'ambiente 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
EDIT: ho dimenticato di dire questo:
Quando eseguo un heroku run ls -la /app/.apt/usr/lib/x86_64-linux-gnu
dove il libaio dovrebbe essere installato ho ottenuto questo:
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
Ma quando corro heroku run ls -l /lib/x86_64-linux-gnu/libaio.so.1.0.1
non c'è nessun file lì. Quindi il vero problema è dove sono installati libaio?
Chiunque può aiutarmi a fare questo lavoro? O c'è un'altra buona sostituzione per cx_Oracle?
Grazie!
Sei in grado di verificare che libaio sia stato effettivamente installato in una delle directory nel tuo LD_LIBRAY_PATH? –
Ho dimenticato di dire che ... Modificherò la mia domanda ... ty –