Anaconda 3.5 (64bit Windows) Install cx_Oracle

victor_gu picture victor_gu · Jan 6, 2016 · Viewed 8.4k times · Source

I have installed Anaconda 3.5 for Windows 64bits, and I need to connect to the Oracle database using package "cx_Oracle".

I tried with the anaconda way:

conda install -c https://conda.anaconda.org/anaconda cx_oracle

The error messages below:

Hint: the following packages conflict with each other:
  - cx_oracle
  - python 3.5*
Use 'conda info cx_oracle' etc. to see the dependencies for each package.
Note that the following features are enabled:
  - vc14

It seems that cx_oracle isn't compatible with Python 3.5.

After this, I also tried to install directly with the binary:

python setup.py install

It throws a bunch of errors like:

cx_Oracle.obj : error LNK2001: unresolved external symbol OCILobGetChunkSize
cx_Oracle.obj : error LNK2001: unresolved external symbol OCIStmtExecute
cx_Oracle.obj : error LNK2001: unresolved external symbol OCILobFileClose

Is there a way to install cx_oracle for Anaconda 3.5 ??

Answer

Mikolas Pansky picture Mikolas Pansky · Jun 10, 2017

It's kind of non-trivial. However doable. Follow these steps:

1) Download Oracle Instant client for Windows x64 from

http://www.oracle.com/technetwork/topics/winx64soft-089540.html

e.g. choose client e.g. 11.2.0.4

-> instantclient-basic-windows.x64-11.2.0.4.0.zip

-> instantclient-sdk-windows.x64-12.1.0.2.0.zip

2) Create directory and unzip the client & sdk in there:

e.g. c:\ora\11gx64

3) Set ORACLE_HOME and TNS_ADMIN

See https://superuser.com/questions/949560/how-do-i-set-system-environment-variables-in-windows-10 for details

e.g. ORACLE_HOME=c:\ora\11gx64

and TNS_ADMIN=c:\ora\11gx64

also add %ORACLE_HOME% in Your %PATH%

4) In the created directory put file tnsnames.ora and fill with connection string to db:

%ORACLE_HOME%**tnsnames.ora**

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

-> replace 127.0.0.1 with your hostname

-> replace XE with your SID

5) I suppose You've got already Python installed.

-> Otherwise visit Download page for Python

-> Install python (3.6.1 in the time of writting)

-> If not installed install pip (https://pip.pypa.io/en/stable/installing/#do-i-need-to-install-pip)

-> execute python get-pip.py

6) Download and Install Visual C++ 2015 Build Tools

-> Search for Visual C++ 2015 Build Tools -> Install visualcppbuildtools_full.exe

7) Use pip to install cx_oracle

  pip install cx_oracle

(in the time of writing there is trouble with default installed version 5.3 so the Version 6.0b2 has to be installed)

  python -m pip install cx_Oracle --pre

The first steps are universal in my honest opinion for both conda and pip.