How to compile cx_Oracle module on Windows x86
Usually I would not touch with a stick open source package that need to be compiled on Windows. cx_Oracle is different. For me it’s a mandatory python extension module that just need to be there when I need to access Oracle database from python script. Until recently, I was happy with more or less promptly released binaries. They always installed and worked flawlessly. The problem is that at the time of this writing I’m starting to evaluate python 3.1.1 for which cx_Oracle is not yet available. It’s a trivial task to compile cx_Oracle on Linux, but I need Windows version as well. So, for the first time I tried to compile cx_Oracle on Windows by myself.
According to author build instructions, he recommends MinGW compiler for builds on Windows. To make my story short, I downloaded MinGW and to the best of my knowledge tried to compile cx_Oracle module. I miserably failed, each time with an error stating that vcvarsall.bat could not be found. Obviously setup.py script or perhaps python distutils module itself simply expects Microsoft compiler, Visual C++ to be present. After spending a couple of hours searching the web for hints I decided to try another route, with Microsoft Visual Studio Express 2008. Surprisingly cx_Oracle 5.0.2 compiled easily.
Here are the steps that I followed:
- downloaded cx_Oracle source code (see link “Source code only”) and unpacked the tar in temporary directory
- downloaded and installed Microsoft Visual C++ 2008 Express edition.
- downloaded and installed Python 3.1.1
- downloaded and installed Oracle10g client (10.2.0.4)
- compiled and installed cx_Oracle:
1) Open Visual Sudio Command Promt, Start -> Run:
%comspec% /k ""C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"" x86
2) within VS 2008 command prompt cd to directory where you untared cx_Oracle
C:\Program Files\Microsoft Visual Studio 9.0\VC> cd c:\Python3\cx_Oracle-5.0.2
3) set environment, for example:
C:\Python3\cx_Oracle-5.0.2> SET ORACLE_HOME=D:\ORACLE\ORA10
C:\Python3\cx_Oracle-5.0.2> SET PATH=C:\PYTHON3;%ORACLE_HOME%\BIN;%PATH%
4) compile and install cx_Oracle
C:\Python3\cx_Oracle-5.0.2> python setup.py build
C:\Python3\cx_Oracle-5.0.2> python setup.py install
5) test cx_Oracle by trying to import module
Python 3.1.1 (r311:74483, Aug 17 2009, 17:02:12) [MSC v.1500 32 bit (Intel)] on
Type "help", "copyright", "credits" or "license" for more information.
>>> import cx_Oracle
Visual Studio 2008 Express is free but need to be registered within 30 days, registration is completely up to you, if your only goal was to compile cx_Oracle you don’t need registration.