2 votes

cx_Message d'erreur d'installation du module Oracle

J'utilise Python 2.7 (32 bits) et mon système d'exploitation est Windows 7 64 bits.

J'essaie d'installer le module cx_Oracle. J'ai exécuté le msi "cx_Oracle-5.1.2-10g.win32-py2.7.msi", puis j'ai exécuté "easy_install cx_Oracle" sur la ligne cmd et j'ai obtenu le message :

erreur : Impossible de trouver vcvarsall.bat

J'ai trouvé sur ce site que la meilleure solution est d'installer Microsoft Visual Studio 2008, ce que j'ai fait à partir d'un lien trouvé sur ce site.

Maintenant, lorsque j'exécute "easy_install cx_Oracle" sur la ligne cmd, j'obtiens le message suivant, dont je ne connais pas la signification :

C:\Python27 >easy_install cx_Oracle Recherche de cx_Oracle Lecture ....org/simple/cx_Oracle/ Lecture ....net/crew/atuining Lecture ...sourceforge.net Meilleur résultat : cx-Oracle 5.1.2 Téléchargement de http://prdownloads.sourceforge.net/cx-oracle/cx_Oracle-5.1.2.tar.gz ? téléchargement Traitement cx_Oracle-5.1.2.tar.gz Écriture c : \users\cnielsen\appdata\local\temp\easy_install -44rupd \cx_Oracle -5.1.2 \setup.cfg Exécution de cx_Oracle-5.1.2 \setup.py -q bdist_egg --dist-dir c : \users\cnielsen\appda ta \local\temp\easy_install -44rupd \cx_Oracle -5.1.2 \egg -dist-tmp-eyihnb Traceback (dernier appel le plus récent) : Fichier " C:\Python27\<strkeep>scripts<strkeep>\easy_install -script.py", ligne 9, dans load_entry_point('setuptools==0.8', 'console_scripts', 'easy_install')() Fichier " build \bdist.win -amd64 \egg\setuptools\command\easy_install.py ", ligne 1992 , dans main Fichier " build \bdist.win -amd64 \egg\setuptools\command\easy_install.py ", ligne 1979 , dans with_ei_usage Fichier " build \bdist.win -amd64 \egg\setuptools\command\easy_install.py ", ligne 1996 , dans le fichier " C:\Python27\lib\distutils\core.py ", ligne 152, dans setup dist.run_commands() Fichier " C:\Python27\lib\distutils\dist.py ", ligne 953, dans run_commands self.run_command(cmd) Fichier " C:\Python27\lib\distutils\dist.py ", ligne 972, dans run_command cmd_obj.run() Fichier "build \bdist.win -amd64 \egg\setuptools\command\easy_install.py ", ligne 380, dans run Fichier " build \bdist.win -amd64 \egg\setuptools\command\easy_install.py ", ligne 623, dans easy_install Fichier " build \bdist.win -amd64 \egg\setuptools\command\easy_install.py ", ligne 653, dans install_item Fichier " build \bdist.win -amd64 \egg\setuptools\command\easy_install.py ", ligne 849, dans install_eggs Fichier " build \bdist.win -amd64 \egg\setuptools\command\easy_install.py ", ligne 1130 , dans build_and_install Fichier " build \bdist.win -amd64 \egg\setuptools\command\easy_install.py ", ligne 1115 , in run_setup Fichier " build \bdist.win -amd64 \egg\setuptools\sandbox.py ", ligne 69, dans run_setup Fichier "build \bdist.win -amd64 \egg\setuptools\sandbox.py ", ligne 120, dans run Fichier " build \bdist.win -amd64 \egg\setuptools\sandbox.py ", line 71, in File "setup.py", line 350, in File " C:\Python27\lib\distutils\core.py ", ligne 152, dans setup dist.run_commands() Fichier " C:\Python27\lib\distutils\dist.py ", ligne 953, dans run_commands self.run_command(cmd) Fichier " C:\Python27\lib\distutils\dist.py ", ligne 972, dans run_command cmd_obj.run() Fichier "build \bdist.win -amd64 \egg\setuptools\command\bdist_egg.py ", ligne 185, dans run Fichier " build \bdist.win -amd64 \egg\setuptools\command\bdist_egg.py ", ligne 171, dans call_command Fichier " C:\Python27\lib\distutils\cmd.py ", ligne 326, dans run_command self.distribution.run_command(command) Fichier " C:\Python27\lib\distutils\dist.py ", ligne 972, dans run_command cmd_obj.run() Fichier "build \bdist.win -amd64 \egg\setuptools\command\install_lib.py ", ligne 20, dans le fichier d'exécution " C:\Python27\lib\distutils\command\install_lib.py ", ligne 111, dans build self.run_command('build_ext') Fichier " C:\Python27\lib\distutils\cmd.py ", ligne 326, dans run_command self.distribution.run_command(command) Fichier " C:\Python27\lib\distutils\dist.py ", ligne 972, dans run_command cmd_obj.run() Fichier "build \bdist.win -amd64 \egg\setuptools\command\build_ext.py ", ligne 52, dans run Fichier " C:\Python27\lib\distutils\command\build_ext.py ", ligne 339, dans run self.build_extensions() Fichier " C:\Python27\lib\distutils\command\build_ext.py ", ligne 448, dans build_exte nsions self.build_extension(ext) Fichier "build \bdist.win -amd64 \egg\setuptools\command\build_ext.py ", ligne 186, dans le fichier build_extension " C:\Python27\lib\distutils\command\build_ext.py ", ligne 498, dans build_exte nsion depends=ext.depends) Fichier " C:\Python27\lib\distutils\msvc9compiler.py ", ligne 473, dans compile self.initialize() Fichier " C:\Python27\lib\distutils\msvc9compiler.py ", ligne 383, dans initialize vc_env = query_vcvarsall(VERSION, plat_spec) Fichier " C:\Python27\lib\distutils\msvc9compiler.py ", ligne 299, dans query_vcvarsal l raise ValueError(str(list(result.keys()))) ValueError : [u'path']

1voto

Eduardo Points 327

Pour répéter ce que Leandro a dit, vous n'avez pas besoin d'installer facilement cx_Oracle si vous avez déjà exécuté le programme d'installation .msi et que vous avez besoin d'installer le client instantané d'Oracle.

Comme vous l'avez déjà constaté, l'installation de l'oracle instantclient signifie que vous devez simplement le décompresser dans un dossier de votre système (par exemple : C:\oraclient ).

Quelques éléments à garder à l'esprit :

Assurez-vous que vous utilisez la même version (ou des versions compatibles) de cx_Oracle, instantclient et le serveur de base de données lui-même. Par exemple, la version 12 d'instantclient ne prend pas en charge les serveurs de bases de données inférieurs à la version 10.) Vérifiez également que vous utilisez toutes les versions 32 bits ou toutes les versions 64 bits (y compris cx_Oracle, instantclient et python lui-même).

Vous devrez également définir les variables d'environnement ORACLE_HOME et PATH dans le répertoire où vous avez décompressé l'oracle instantclient (par exemple : C:\oraclient ) afin d'éviter l'ImportError que vous avez mentionné (DLL load failed : %1 is not a valid Win32 application). L'ImportError signifie simplement qu'il n'a pas pu trouver les bibliothèques nécessaires.

0voto

Leandro Lameiro Points 71

L'étape easy_install essaie de compiler les sources de cx_Oracle sur votre machine, mais ce n'est pas nécessaire puisque vous avez déjà installé le MSI, qui est une version binaire précompilée.

Le MSI que vous avez installé devrait suffire pour utiliser cx_Oracle, à condition que le client Oracle binaire soit également installé (par exemple, l'instantclient).

0voto

Chris Nielsen Points 370

J'ai finalement résolu le problème après 3 jours de recherche.

L'astuce était de :

  1. Installer vcredist_x86.exe . Après l'installation, j'ai lancé easy_install cx_Oracle et n'a plus vu le message d'erreur original.
  2. Réinstaller Python 2.7.5 en s'assurant qu'il s'agit de la version 32 bits (x86).
  3. Réinstaller mon IDE "PyScripter", en s'assurant qu'il s'agit bien de la version 32 bits (x86)

0voto

wizardbluebolt Points 25

Étant donné que cx_Oracle se connecte uniquement à l'aide de la fonction Oracle TNS Names, il se peut que vous deviez également définir la variable d'environnement TNS_ADMIN pour indiquer où se trouve le fichier TNS Names à utiliser. Ce problème m'a également touché.

0voto

SQL1911 Points 1

Pour Windows 7 64 bit vous avez besoin de "Windows amd64 Installer (Oracle 11g, Python 3.3)". Il fonctionne également sur Intel.

Je n'ai pas d'InstantClient mais j'utilise SQL*Plus à partir de l'installation d'Oracle 11.2 (64 bits).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X