python - ejemplos - django
El módulo Python "cx_Oracle" no se pudo encontrar (4)
Después de haber estado tratando de resolver este problema durante días, descubrí que set PATH=%PATH%:<insert Oracle home here>
no me solucionó el problema. Tuve que ir a mis propiedades del sistema de Windows XP y anexar el hogar de Oracle a la variable ''ruta'' en ''Variables del sistema''.
Recientemente instalé el módulo cx_Oracle en mi máquina, para conectarme a un servidor de base de datos Oracle remoto. (No tengo un cliente de Oracle a mi lado).
- Python: versión 2.7 x86
- Oracle: Verision 11.1.X x64
- Cx_Oracle: Verion-5.1.2-11g.win32-py2.7
Luego, cada vez que ejecuto mi script, falla e imprime el siguiente mensaje:
ImportError: error en la carga de DLL: no se pudo encontrar el módulo especificado.
Encontré una publicación relacionada en Here , por lo que me pregunto si de todos modos tengo que tener un cliente de Oracle a mi lado donde se invoca el script de python.
¿Puede alguien ayudarme? Gracias por adelantado.
# - This import requires appropriate oraocciXX.dll to be available in PATH (on windows)
# (Probably LD_LIBRARY_PATH or LD_LIBRARY_PATH64 on POSIX)
# where XX is the oracle DB version, e.g. oraocci11.dll for Oracle 11g.
# - This dll is part of the Oracle Instant client pkg available here:
# http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
# - Also ensure that python, cx_Oracle and Oracle Client are of same arch (32 or 64-bit)
#
import cx_Oracle
Puede encontrar el arco (32 o 64 bits) para:
- python simplemente ejecutando el python en modo interactivo en la línea de comandos.
- cx_Oracle: mira el nombre del archivo descargado.
- Cliente de Oracle:
- ejecuta el sqlplus que es parte de tu paquete de cliente
- Inicie el Administrador de tareas y vea si sqlplus.exe tiene "* 32" al lado (= 32 bit) o no (= 64 bit)
- si no tiene sqlplus, use
dumpbin /headers oraocciXX.dll
- Si usa POSIX, probablemente ya lo sepa. Utilice el
file oraocciXX.so
Finalmente, si todavía no entiendes, aquí está realmente para instrucciones de dummies:
- Asegúrese de haber instalado las versiones de 32 bits de python, cx_Oracle y Oracle Instant Client. Estos también podrían ser de 64 bits, pero deben ser iguales para todos 3. No se pueden mezclar y combinar. Campo de golf:
- Oracle Instant Client Digamos que está instalado en
C:/ProgFiles/OraClient/11_2
- cx_Oracle
- Pitón
- Oracle Instant Client Digamos que está instalado en
- Windows:
-
set PATH=%PATH%;C:/ProgFiles/OraClient/11_2
-
- POSIX (Linux / Unix / Solaris ...) <- No comprobado ...
-
export LD_LIBRARY_PATH=/path/to/your/32bit/oraocciXX.so
- (64 bit)
export LD_LIBRARY_PATH64=/path/to/your/64bit/oraocciXX.so
-
- Ejecute
path-to-python/python.exe -c "import cx_Oracle"
para probar si su configuración está funcionando o no.- si imprime
- nada: entonces es exitoso.
-
ImportError: DLL load failed: The specified module could not be found
: entoncesImportError: DLL load failed: The specified module could not be found
oraocciXX. Configure los archivos env correctamente. -
ImportError: DLL load failed: %1 is not a valid Win32 application
: tiene una discrepancia de 32/64 bits.
No puedo comentar todavía :-( pero para la única fase anterior, ¿quieres intentar verificar los permisos de .exe y .dlls para asegurarte de que sean ejecutables?
Entonces, los pasos que debía hacer para que funcione.
Descomprime el cliente instantáneo desde aquí. http://www.oracle.com/technetwork/topics/winx64soft-089540.html
chmod + x * .exe * .dll (estoy usando cygwin).
Para completar, no pude conseguir que cx_oracle se instale a través de pip usando cygwin.
Así que tuve que usar dist net estándar (no cygwin) e instalé cx_oracle a través del instalador de Windows.
Además, tuve que agregar f: / opt / instantclient_12_1 (ubicación donde instalé el cliente instantáneo de Oracle) a la ruta de Windows (a través de Sistema-> Propiedades avanzadas del sistema-> Variables de entorno-> Variables del sistema).
Sí, debe tener un cliente de Oracle instalado a su lado.
Desde el cx_ORacle README
"Tenga en cuenta que para usar cx_Oracle se necesita una instalación cliente (o servidor) de Oracle. Si no necesita las herramientas que vienen con una instalación completa del cliente, se recomienda instalar Instant Client, que es mucho más fácil de instalar. "
EDITAR enlace a Instant Client: http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html