web-dev-qa-db-fra.com

cx_Oracle: ImportError: DLL Échec du chargement: cette application a échoué

Voici ce que j'ai fait:

  1. Je suis sur Windows XP SP3
  2. J'ai déjà installé Python 2.7.1.
  3. J'ai téléchargé instantclient-basic-nt-11.2.0.3.0.Zip, décompressé et mis dans C:\Program Files\Oracle\instantclient_11_2.
  4. J'ai ajouté ce chemin à la variable d'environnement Windows Path.
  5. J'ai créé une nouvelle variable d'environnement Oracle_HOME avec ce chemin comme valeur.
  6. J'ai installé cx_Oracle-5.1.2-11g.win32-py2.7.msi.

Et en exécutant import cx_Oracle tout ce que je reçois est

Traceback (most recent call last): 
  File "<string>", line 2, in <module> 
ImportError: DLL load failed: This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem.

J'ai évidemment désinstallé/réinstallé cx_Oracle à quelques reprises mais rien ne semble vraiment l'aider. Quelqu'un pourrait-il s'il vous plaît fournir un indice comment résoudre ce problème?

METTRE &AGRAVE; JOUR

J'ai utilisé Dependency Walker et cela pose beaucoup de problèmes. Toutefois, le premier fichier .dll manquant (msvcr80.dll) est en réalité present in C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.91_x-ww_0de56c07.

enter image description here

15
RubenGeert

OK, qu'est-ce qui a finalement résolu le problème (pas sûr que toutes les étapes soient nécessaires et aucune idée pourquoi exactement ceci et seulement cela a fonctionné jusqu'à présent):

  • Téléchargez et décompressez version 12 à partir de ici .
  • Ajoutez "Oracle_HOME" en tant que variable d’environnement Windows et définissez sa valeur sur ...\instantclient_12_1 (et non son dossier contenant!).
  • Ajoutez ce même chemin à la variable d’environnement "Path".
  • Seulement maintenant, installez cx_Oracle .
16
RubenGeert

Pour aider d'autres personnes avec le même problème:

Cette erreur indique une incompatibilité de 32 à 64 bits entre certains DLL lors de l'importation du module. Les possibilités sont:

  1. Architecture différente de Python et de cx_Oracle (moins probable car le programme d'installation de cx_Oracle sous Windows vous avertit si Python approprié n'a pas été trouvé).
  2. Architecture différente des bibliothèques cx_Oracle et oci.dll (plus probable).

N'oubliez pas que cx_Oracle utilise un client Oracle standard (au niveau OCI) qui doit être installé sur votre ordinateur. Il recherche oci.dll à plusieurs endroits, y comprisCHEMIN. Si le fichier oci.dll correspondant à une version incorrecte du client est détecté, l'erreur apparaît.

Si vous obtenez cette liste de chemins de vérification d'erreur dans la variableCHEMINenvironnement. Il est susceptible de contenir le chemin d'accès au dossier BIN d'une version incorrecte du client Oracle. Si vous avez plusieurs clients, indiquez dans le cheminCHEMINou installez le client approprié.

NOTE: Oracle_HOME n'a pas d'effet sur cx_Oracle. Dans mon cas, seul le changement de PATH a aidé. Je pense que la solution de Ruben fonctionne à cause de l'item 3 ('Ajouter ce même chemin à la variable d'environnement "Path").

9
greatvovan

J'utilise python35 64 bits et Oracle Express sur Win 7 (64 bits) . J'ai installé cx_Oracle à l'aide de pip3 (pip3 install cx_Oracle) au lieu de télécharger le programme d'installation à partir de pypi.

J'ai rencontré le même problème. 

Je l'ai résolu en suivant les instructions ci-dessus, mais au lieu du client 32 bits, j'ai téléchargé la version 64 bits du client instantané (instantclient-basic-windows.x64-11.2.0.4.0.Zip) à partir de http: // www .Oracle.com/technetwork/topics/winx64soft-089540.html .

Je l'ai ensuite extrait dans c:\oraclexe. Et ajouté ces variables d'environnement

set Oracle_BASE=C:\oraclexe
set Oracle_HOME=C:\oraclexe\app\Oracle\product\11.2.0\server
set PATH=C:\oraclexe\instantclient_11_2;%PATH%

Et lancé mes commandes de migration Django:
python manage.py migrer

Cela a fonctionné excellent

4
Jaya Nandan

Même ImportError pour la configuration de:

  • Windows 10 x64
  • Oracle Instant Client 12_1 x64
  • Python 2.7.11 x64
  • cx_Oracle cx_Oracle-5.2-12c.win-AMD64-py2.7

Je l'ai résolu en copiant le fichier msvcr100.dll dans le <Oracle_instant_client_dir>

2
Sergey Stepanov

Moyen facile:

  • Assurez-vous que vous avez installé cx-Oracle, j'ai cx_Oracle-5.1.3-11g.win32-py2.7.exe
  • Téléchargez, décompressez instantclient_12_1 et déplacez-le vers C:\Python27
  • Ajouter la variable d'environnement C:\Python27\instantclient_12_1
  • Redémarrez votre ordinateur
2
rob

Si ce problème se posait également, l'importation de cx_Oracle (du moins à partir de la version 5.1.2) échouera (avec la même erreur) si vous avez des chemins UNC non valides/inaccessibles devant Oracle dans la variable d'environnement PATH.

La correction du chemin UNC (qui n’était pas lié à Oracle) a résolu le problème.

2
jasonobrien

Si vous utilisez conda en tant que gestionnaire de paquets, un moyen de résoudre le problème DLL consiste à installer Oracle-instantclient en effectuant un conda install Oracle-instantclient. Cela a corrigé la dépendance que je ne pouvais pas réparer en installant manuellement le client instantané d'Oracle.

1
user3819536

Les étapes que j'ai suivies:

  1. Téléchargé le client intelligent instantclient-basic-windows.x64-12.1.0.2.0.Zip

  2. Extrait et copié dans # votre répertoire #\instantclient_12_1

    Le répertoire ci-dessus contient les dll

  3. Ajoutez la variable PATH avec #votre répertoire #\instantclient_12_1 et la variable env créée Oracle_HOME = #votre répertoire #\instantclient_12_1

  4. Téléchargez et installez cx_Oracle-5.2.1-11g.win-AMD64-py2.7.exe

  5. Ouvrir le type d'inactivité import cx_Oracle

0
rupesh patil

Je sais que c'est un ancien billet, mais j'avais ce problème aujourd'hui et aucune des solutions ne fonctionnait. Je suppose que cela pourrait fonctionner pour d'autres avec le même problème que maintenant.

Version Python: 2.7.15 (64 bits) Version cx_Oracle: 6.4.1Oracle Instant Client: 18.3

J'ai continué à avoir l'erreur suivante même si j'ai suivi toutes les étapes dans le bon ordre: 

cx_Oracle.DatabaseError: DPI-1047: la bibliothèque du client Oracle ne peut pas être chargée

Je l'ai résolu en rétrogradant ma version d'Oracle Instant Client à 12.1

0
Dominique Lambert

si vous utilisez Anaconda sur Windows, essayez:

conda install cx_Oracle

sur votre cmd

-> ce 

0
user6405238

Comme c'est la deuxième fois que je viens à cette question, je ressens le besoin de publier ce que j'ai fait:

J'utilise:

  • Gagnez 8 64 bits 
  • Python 2.7

Je n'ai pas réussi à installer Python et cx_Oracle 64 bits .

Cela ne fonctionnait que lorsque j'ai essayé les versions 32 bits et suivi les instructions de réponse @rob

0
Marcelo Assis

J'ai eu le même problème avec DLL. Le chargement a échoué sur ma machine Windows. Le client Oracle installé, les variables définies, a exécuté le fichier cx_Oracle-5.1.3-11g.win32-py2.7.exe.

cependant, lorsque j'ai installé cx_Oracle avec easy_setup, le problème a été résolu.

C:\Python27\Scripts\easy_install.exe cx_Oracle-5.1.3-11g.win32-py2.7.exe
0
maxim