- Download Instant Client:
- instantclient-basic-macos.x64-11.2.0.4.0.zip
- instantclient-sdk-macos.x64-11.2.0.4.0.zip
- instantclient-sqlplus-macos.x64-11.2.0.4.0.zip
-
Unzip and move to /opt
-
Create symlink
$ cd /opt/instantclient_11_2/ $ ln -s libclntsh.dylib.11.1 libclntsh.dylib
-
[ This step might not be needed ]
Copy files:
sudo cp /opt/instantclient_11_2/sdk/include/*.h /usr/include/ sudo cp /opt/instantclient_11_2/*.dylib /usr/lib sudo cp /opt/instantclient_11_2/sqlplus /usr/bin
-
Run pip install. If it needs root permission, su to root first. Make sure you do this rather than sudo because you need to set the environment variable in the correct shell
export ORACLE_HOME=/opt/instantclient_11_2 pip install cx_Oracle
-
Test:
Python 2.7.6 (default, Sep 9 2014, 15:04:36) [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import cx_Oracle >>> conn_str = u'USER/[email protected]:1521/orcl' >>> conn = cx_Oracle.connect(conn_str) >>> c = conn.cursor() >>> c.execute(u'select sysdate from dual') <cx_Oracle.Cursor on <cx_Oracle.Connection to USER/[email protected]:1521/orcl>> >>> for row in c: ... print row ... (datetime.datetime(2015, 2, 19, 15, 56, 5),) >>>
If you get this:
Python 2.7.6 (default, Sep 9 2014, 15:04:36)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cx_Oracle
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: dlopen(/Library/Python/2.7/site-packages/cx_Oracle.so, 2): Library not loaded: /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1
Referenced from: /Library/Python/2.7/site-packages/cx_Oracle.so
Reason: image not found
Then make sure you've set DYLD_LIBRARY_PATH correctly:
export DYLD_LIBRARY_PATH=/opt/instantclient_11_2/
I think I botched my installation some how, however I figured out a work around.
when I was done following these instructions and even other tutorials I found online I kept getting this error:
After some playing around with it I found that as long as I was in $DYLD_LIBRARY_PATH I could run cx_oracle just fine however that's unpractical. I did some more playing around and I found that if I create a $DYLD_LIBRARY_PATH/lib directory and add a link to $DYLD_LIBRARY_PATH/libclntsh.dylib in that directory was able to get it working.
Long story short I think some of these files need to be moved into /lib however for now I don't know which ones. What I did to get it working:
sudo mkdir $ORACLE_HOME/lib
sudo ln -s $DYLD_LIBRARY_PATH/libclntsh.dylib $ORACLE_HOME/lib/