Skip to content

Instantly share code, notes, and snippets.

@kubo
Last active April 12, 2018 18:43
Show Gist options
  • Save kubo/8a45c653d06040c30135 to your computer and use it in GitHub Desktop.
Save kubo/8a45c653d06040c30135 to your computer and use it in GitHub Desktop.

This document has been obsolete since Oracle Instant Client 12.1 for OS X was released. The 12.1 client supports OS X 10.11 El Capitan, 10.10 Yosemite, and 10.9 Mavericks and can connect to Oracle Database 10.2 or later.

Look at this document to install 12.1.

You should add the environment variable FORCE_RPATH to link with -rpath on compilation. (You have no need to set the environment variable at runtime.)


The followings are obsolete.

This page is based on Install node-oracledb on OS X 10.11 El Capitan and modified for Python.

Install C compiler

You need to install the command line developer tools or the Xcode. (The latter includes the former.)

Run cc --version in a terminal to check whether they are installed.

If the cc version is printed, the tools are installed.

If this dialog is displayed, click its Install button to install the tools. You have no need to install the Xcode to compile cx_Oracle. It requires command line tools, not an IDE such as the Xcode.

If Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo. is printed, you need to run sudo cc --version, enter your password, look at the license and type agree.

Install PyPI

If you use bundled Python, run sudo easy_install pip to install pip command. Otherwise brew install python to install python and pip via Homebrew.

Install Oracle Instant Client Packages

Download Oracle Instant Client Packages

Download the following packages from Oracle Technology Network

  • Instant Client Package - Basic or Basic Lite
  • Instant Client Package - SDK
  • Instant Client Package - SQL*Plus (optionally)

Install Oracle Instant Client Packages via Homebrew

To install Oracle Instant Client Basic Lite via Homebrew

  • Download two instant client packages: Basic Lite and SDK and put them in /Library/Caches/Homebrew (if the environment variable HOMEBREW_CACHE is not set and $HOME/Library/Caches/Homebrew doesn't exist.)

  • Run the followining commands:

      brew install InstantClientTap/instantclient/instantclient-basiclite
      brew install InstantClientTap/instantclient/instantclient-sdk
    
  • Add the library directory to PATH to tell the instant client location while performing the following installation steps.

      export PATH=$(brew --prefix)/lib:$PATH
    

To install Oracle Instant Client Basic via Homebrew

  • Download three instant client packages: Basic, Basic Lite and SDK and put them in /Library/Caches/Homebrew (if the environment variable HOMEBREW_CACHE is not set and $HOME/Library/Caches/Homebrew doesn't exist.)

  • Run the followining commands:

      brew install InstantClientTap/instantclient/instantclient-basic
      brew install InstantClientTap/instantclient/instantclient-sdk
    
  • Add the library directory to PATH to tell the instant client location while performing the following installation steps.

      export PATH=$(brew --prefix)/lib:$PATH
    

Install Oracle Instant Client Manually

If you don't use Homebrew, do the following:

Unzip the packages as follows:

mkdir /opt
mkdir /opt/oracle
cd /opt/oracle

Copy downloaded files to /opt/oracle before running the following commands.

unzip instantclient-basic-macos.x64-11.2.0.4.0.zip
unzip instantclient-sdk-macos.x64-11.2.0.4.0.zip
unzip instantclient-sqlplus-macos.x64-11.2.0.4.0.zip

Make a symbolic link to link the library.

cd /opt/oracle/instantclient11_2
ln -s libclntsh.dylib.11.1 libclntsh.dylib

Fix the library install and identification names using fix_oralib to make them work without DYLD_LIBRARY_PATH.

cd /opt/oracle/instantclient11_2
curl -O https://raw.githubusercontent.com/kubo/fix_oralib_osx/master/fix_oralib.rb
ruby fix_oralib.rb --absolute-path

Add the library directory to PATH to tell the instant client location while performing the following installation steps.

export PATH=/opt/oracle/instantclient11_2:$PATH

Install cx_Oracle

Install cx_Oracle from the PyPI:

pip install cx_Oracle

If you are installing with sudo, you may need to use sudo -E to preserve the environment variable values.

@chrisportela
Copy link

Anyone who has issues with installing via Homebrew: make sure you place the part $(brew --prefix)/lib at the beginning of your PATH. Seems to make a difference that I don't understand.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment