I\'m trying to build cx_Oracle for a Python 2.7.2 and Oracle 11g installation but the built cx_Oracle.so cannot find libclntsh.so.11.1 so importing cx_Oracle in Python fails
Yes. You forgot to tell your loader cache tool that it needs to look in that directory for libraries. Add that directory to /etc/ld.so.conf
or a similar file and run ldconfig
.
Set the LD_RUN_PATH. ( LD_RUN_PATH is used by the linker to specify where to look for libraries only at run time.)
Now build cx_Oracle.
/mypath/cx_Oracle-5.1.1]$ export LD_RUN_PATH="/apps/oracle/client/11.2.0.1/home1/lib"
/mypath/cx_Oracle-5.1.1]$ python2.7 setup.py build
This will not require the setting of LD_LIBRARY_PATH while importing cx_Oracle.
Many oracle products install oraenv. It will set, among other environment variables, LD_LIBRARY_PATH
, so consider running . oraenv
instead of setting your environment manually.
Add /apps/oracle/client/11.2.0.1/home1/lib/
to your LD_LIBRARY_PATH
environment variable
execute the command below in the terminal before running python or add it into your .bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/apps/oracle/client/11.2.0.1/home1/lib/