web-dev-qa-db-fra.com

Aide à l'installation de cx_Oracle

J'essaie d'installer le cx_Oracle pour Python 2.6, mais il échoue. Je ne connais pas assez le C ou MS Vis. Le compilateur de Studio pour même aborder le réparer moi-même.

C'est ce qui est sorti sur la ligne de commande:

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: '<' : signed/unsigned mismatch
c:\pydev\cx_Oracle-5.0.1\ObjectVar.c(134) : warning C4018: '<' : signed/unsigned mismatch
c:\pydev\cx_Oracle-5.0.1\Variable.c(331) : error C2036: 'void *' : unknown size
c:\pydev\cx_Oracle-5.0.1\Variable.c(878) : warning C4244: '=' : conversion from 'sb2' to 'sb1', possible loss of data
c:\pydev\cx_Oracle-5.0.1\Variable.c(914) : warning C4018: '<' : signed/unsigned mismatch
error: command '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe"' failed with exit status 2

Quelqu'un at-il une idée de comment résoudre ce problème? (Je peux également avoir un problème avec ce fichier cl.exe, je pense que je me souviens avoir vu cela comme un problème ailleurs, mais j'ai quatre machines Windows qui auraient pu avoir un problème là-bas.).

----------------------------- MODIFIER ----------- ------------------

La raison pour laquelle je n'utilise pas le programme d'installation précompilé est que lorsque j'essaie d'exécuter le module, j'obtiens ce qui suit:

 Python 2.6.3 (r263rc1: 75186, 2 octobre 2009, 20:40:30) [MSC v.1500 32 bits (Intel)] sur win32 
 Tapez "help", "copyright", "credits" ou "license" pour plus d'informations. 
 >>> import cx_Oracle 
 Traceback (dernier appel en date): 
 File "", ligne 1, dans 
 ImportError: DLL chargement échoué: le module spécifié est introuvable. 

Je suppose que cela signifie qu'il n'a pas été correctement installé. Si quelqu'un peut me dire ce que j'ai fait de mal ici, ce serait aussi une réponse parfaitement acceptable.

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

J'ai récupéré tous les fichiers de Oracle's Basic Client version 11.1.0.7. Je n'ai pas essayé d'installer un client plus important. J'en télécharge un maintenant.

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

Plus d'information

  • Le répertoire actuel du fichier setup.py de cx_Oracle est C:\pydev\cx_Oracle-5.0.1
  • La version de Python est 2.6.3
  • Le répertoire actuel pour Python est C:\Python26 - pour accéder à python 2.6 -> tapez py26 sur la ligne de commande et il sera mappé sur C:\python26\python
22
cwallenpoole

Pourquoi n'utilisez-vous pas un package binaire comme Windows Installer (Oracle 10g, Python 2.6) ?

Voir http://cx-Oracle.sourceforge.net/ pour d'autres packages binaires


Addendum (comme demandé): vous devez vous assurer d'utiliser le cx_Oracle qui:

  • définissez Oracle_HOME si cette variable d'environnement n'existe pas (voir ceci FAQ Oracle )
  • python peut trouver oraocci11.dll pour Oracle 11g, oraocci10.dll pour Oracle 10g ou oraclient9.dll pour Oracle 9i en ajoutant le dossier (devrait être% Oracle_HOME%/bin) où la DLL est dans votre variable d'environnement PATH
  • utiliser le bon paquet binaire (c'est-à-dire construit pour les bonnes versions Python/Oracle)
18
user180100

Vous avez également besoin d'un type de client Oracle installé sur votre machine, car cx_Oracle n'est qu'un pont entre Python et le client Oracle. Les clients Oracle valides incluent une installation Oracle complète (comme Standard ou XE) ou Client instantané

Depuis le readme :

Veuillez noter qu'une installation client (ou serveur) Oracle est requise pour utiliser cx_Oracle. Si vous n'avez pas besoin des outils fournis avec une installation complète du client, il est recommandé d'installer Instant Client, qui est beaucoup plus facile à installer.

Je ne l'ai pas installé sur Windows auparavant, mais vous devrez peut-être définir la variable d'environnement Oracle_HOME pour que cx_Oracle sache où chercher.

8
John Paulett

Si vous utilisez Anaconda Python x64, les choses sont plus facile :

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

(Il installera le bon client Oracle)


Si vous obtenez l'erreur suivante:

[Anaconda2] C:\Users\User>conda install -c https://conda.anaconda.org/anaconda c
x_Oracle
Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata: ......
Solving package specifications: .................
Package plan for installation in environment C:\Anaconda2:

The following NEW packages will be INSTALLED:

    cx_Oracle:            5.1.2-py27_0
    Oracle-instantclient: 11.2.0.4.0-0

The following packages will be UPDATED:

    conda:                3.19.1-py27_0 --> 4.0.5-py27_0
    pip:                  8.0.2-py27_0  --> 8.1.1-py27_0
    pyyaml:               3.11-py27_2   --> 3.11-py27_3
    setuptools:           19.6.2-py27_0 --> 20.3-py27_0
    wheel:                0.26.0-py27_1 --> 0.29.0-py27_0

Proceed ([y]/n)? y

Unlinking packages ...
An unexpected error has occurred, please consider sending the            |   0%
following traceback to the conda GitHub issue tracker at:

    https://github.com/conda/conda/issues

Include the output of the command 'conda info' in your report.


Traceback (most recent call last):
  File "C:\Anaconda2\Scripts\conda-script.py", line 4, in <module>
    sys.exit(main())
  File "C:\Anaconda2\lib\site-packages\conda\cli\main.py", line 173, in main
    args_func(args, p)
  File "C:\Anaconda2\lib\site-packages\conda\cli\main.py", line 180, in args_fun
c
    args.func(args, p)
  File "C:\Anaconda2\lib\site-packages\conda\cli\main_install.py", line 45, in e
xecute
    install.install(args, parser, 'install')
  File "C:\Anaconda2\lib\site-packages\conda\cli\install.py", line 423, in insta
ll
    plan.execute_actions(actions, index, verbose=not args.quiet)
  File "C:\Anaconda2\lib\site-packages\conda\plan.py", line 538, in execute_acti
ons
    inst.execute_instructions(plan, index, verbose)
  File "C:\Anaconda2\lib\site-packages\conda\instructions.py", line 148, in exec
ute_instructions
    cmd(state, arg)
  File "C:\Anaconda2\lib\site-packages\conda\instructions.py", line 95, in UNLIN
K_CMD
    install.unlink(state['prefix'], arg)
  File "C:\Anaconda2\lib\site-packages\conda\install.py", line 714, in unlink
    os.unlink(meta_path)
WindowsError: [Error 5] Access is denied: 'C:\\Anaconda2\\conda-meta\\conda-3.19
.1-py27_0.json'

[Anaconda2] C:\Users\User>

Essayez d'exécuter Anaconda Prompt en tant qu'administrateur:

enter image description here

3
Franck Dernoncourt