Ayuda para instalar cx_Oracle
Pregunta
Estoy tratando de instalar el cx_Oracle para Python 2.6, pero está fallando. No sé lo suficiente sobre C o MS Vis. compilador de estudio para siquiera acercarse a la fijación yo mismo.
Esto es lo que se emite en la línea de comandos:
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
¿Alguien tiene alguna idea de cómo solucionar este problema? (También puede tener un problema con ese archivo cl.exe, creo que recuerdo ver esto como un problema a otro lugar, pero tengo cuatro máquinas de Windows que podría haber tenido problema allí.).
EDITAR ----------------------------- -------------- ---------------
La razón por la que no uso el instalador precompilado es porque cuando trato de ejecutar el módulo consigo el siguiente:
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.
Asumo que eso significa que no se ha instalado correctamente. Si alguien me puede decir lo que hice mal aquí, que también habría una respuesta perfectamente aceptable.
----------------------------- -------------- Edit2 ---------------
He recuperado todos archivos de versión de cliente básico de Oracle 11.1.0.7. No he probado la instalación de un cliente más sustancial. Estoy descargando una ahora.
%ORACLE_HOME%=C:\Oracle\instantclient\ #The directory where the above files have been extracted.
Más información
- El directorio actual para setup.py del cx_Oracle es C: \ pydev \ cx_Oracle-5.0.1
- La versión de Python 2.6.3 es
- El directorio actual para Python es C: \ Python26 - Acceso a Python 2.6 -> Tipo de py26 en la línea de comandos y se asignará a C: \ Python26 \ pitón
Solución
¿Por qué no utilizar un paquete binario como Windows Installer (10g Oracle, Python 2.6) ?
http://cx-oracle.sourceforge.net/ para otros paquetes binarios
Adición (según lo solicitado): debe asegurarse de utilizar el cx_Oracle que:
- set ORACLE_HOME si no existe esta variable de entorno (ver este Oracle Preguntas )
- pitón puede encontrar
oraocci11.dll
para Oracle 11g,oraocci10.dll
para Oracle 10g ooraclient9.dll
para Oracle 9i mediante la adición de la carpeta (debe ser% ORACLE_HOME% / bin) donde el DLL está en que la variable de entorno PATH - utilizar el paquete binario correcto (es decir, construido por el derecho versiones Python / Oracle)
Otros consejos
También es necesario algún tipo de cliente de Oracle instalado en su máquina, ya que cx_Oracle es sólo un puente entre Python y el cliente de Oracle. Los clientes de Oracle válidos incluyen una instalación completa de Oracle (como estándar o XE) o la instantánea rel="noreferrer">
Desde el README :
Tenga en cuenta que un cliente de Oracle (o Se requiere servidor) en la instalación Para utilizar cx_Oracle. Si no lo hace requerir las herramientas que vienen con una instalación completa del cliente, es recomendada para instalar la instantánea Cliente, que es mucho más fácil de instalar.
No he instalado en Windows antes, pero es posible que tenga que establecer la variable de entorno ORACLE_HOME para que cx_Oracle sabe dónde buscar.
Si utiliza Anaconda Python x64, las cosas son más fácil :
conda install -c https://conda.anaconda.org/anaconda cx_oracle
(Se instalará el cliente de Oracle derecha)
Si se obtiene el siguiente error:
[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>
Trate de ejecutar el símbolo del Anaconda como admin: