views:

1012

answers:

2

I'm trying to install the cx_Oracle for Python 2.6, but it is failing. I don't know enough about C or MS Vis. Studio's compiler to even approach fixing it myself.

This is what is output on the command line:

C:\pydev\cx_Oracle-5.0.1>C:\python26\python setup.py install running install running build running build_ext building 'cx_Oracle' extension C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -IC:\Oracle\instantclient\sdk\include -IC:\p ython26\include -IC:\python26\PC /Tccx_Oracle.c /Fobuild\temp.win32-2.6-11g\Release\cx_Oracle.obj -DBUILD_VERSION=5.0.1 cx_Oracle.c c:\pydev\cx_oracle-5.0.1\StringVar.c(392) : warning C4018: '>' : signed/unsigned mismatch c:\pydev\cx_oracle-5.0.1\StringVar.c(417) : warning C4018: '>' : signed/unsigned mismatch c:\pydev\cx_oracle-5.0.1\ObjectVar.c(117) : warning C4018: '

Does anyone have any idea how to fix this? (I also may have an issue with that cl.exe file, I think I remember seeing this as a problem somewhere else, but I have four Windows machines which could have had issue there.).

----------------------------- EDIT -----------------------------

The reason I do not use the pre-compiled installer is because when I try to run the module I get the following:

    Python 2.6.3 (r263rc1:75186, Oct  2 2009, 20:40:30) [MSC v.1500 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import cx_Oracle
    Traceback (most recent call last):
      File "", line 1, in 
    ImportError: DLL load failed: The specified module could not be found.

I assume that means that it has not been properly installed. If someone can tell me what I did wrong here, that would also be a perfectly acceptable answer.

----------------------------- EDIT2 -----------------------------

I have retrieved all files from Oracle's Basic Client version 11.1.0.7. I have not tried installing a more substantial client. I am downloading one now.

%ORACLE_HOME%=C:\Oracle\instantclient\ #The directory where the above files have been extracted.

More information

  • The current directory for the cx_Oracle's setup.py is C:\pydev\cx_Oracle-5.0.1
  • The version of Python is 2.6.3
  • The current directory for Python is C:\Python26 -- to access python 2.6 -> type py26 on the command line and it will map to C:\python26\python
+3  A: 

Why don't you use a binary package like Windows Installer (Oracle 10g, Python 2.6)?

See http://cx-oracle.sourceforge.net/ for other binary packages


Addendum (as requested): you must ensure to use the cx_Oracle that :

  • set ORACLE_HOME if this environment variable doesn't exist (see this Oracle FAQ)
  • python can find oraocci11.dll for Oracle 11g, oraocci10.dll for Oracle 10g or oraclient9.dll for Oracle 9i by adding the folder (should be %ORACLE_HOME%/bin) where the DLL is in you PATH environment variable
  • use the correct binary package (i.e. built for the right Python/Oracle versions)
RC
+1 because it is a correct answer (and could have easily been overlooked -- I even forgot to write that I've tried it), but unfortunately it does not actually solve my problem... This is one of those cases where I really wish I had been stupid enough to overlook the obvious...
Christopher W. Allen-Poole
The problem is loading oracle dll I assume. Check if c:\Oracle is in you PATH environment variable
RC
*TECHNICALLY* this answer is incomplete. Could you put the suggestion to include ORACLE_HOME in my PATH variable?
Christopher W. Allen-Poole
Thank you so much. You are a lifesaver.
Christopher W. Allen-Poole
I could be wrong about this, but I don't believe that setting the ORACLE_HOME environment variable is the preferred way to do this on windows. Instead, you should probably use the Home selector: http://download.oracle.com/docs/cd/E11882_01/em.112/e12255/oui2_manage_oracle_homes.htm#i1006001
Jason Baker
@Jason, the important thing is the path modification, I think ORACLE_HOME is set by the Oracle installer and is not required by python. Thanks for the insight.
RC
+1  A: 

You also need some type of Oracle client installed on your machine, since cx_Oracle is just a bridge between Python and the Oracle Client. Valid Oracle Clients include a full Oracle installation (like Standard or XE) or the Instant Client

From the README:

Please note that an Oracle client (or server) installation is required in order to use cx_Oracle. If you do not require the tools that come with a full client installation, it is recommended to install the Instant Client which is far easier to install.

I have not installed on Windows before, but you may have to set the ORACLE_HOME environment variable so that cx_Oracle knows where to look.

John Paulett
I'm trying to install the more substantial version, but I already have basic "installed" (there is no .msi or .exe).
Christopher W. Allen-Poole
if you haven't installed on Windows, have you installed on Ubuntu/Debian? I want to do that next.
Christopher W. Allen-Poole
I looked at this guide and made some minor tweaks (I am not using XE, but Standard with Instant Client): http://catherinedevlin.blogspot.com/2008/06/cxoracle-and-oracle-xe-on-ubuntu.html
John Paulett