web-dev-qa-db-fra.com

Python 3.4: ImportError: aucun module nommé win32api

J'utilise python 3.4 sur Windows 7.Pour ouvrir un fichier doc, j'utilise ce code

import sys
import win32com.client as win32

Word = win32.Dispatch("Word.Application")
Word.Visible = 0
Word.Documents.Open("MyDocument")
doc = Word.ActiveDocument

M pas sûr de savoir pourquoi cette erreur apparaît à chaque fois

ImportError: aucun module nommé win32api

Bien que j’ai installé pywin32 depuis http://www.lfd.uci.edu/~gohlke/pythonlibs/#pywin32 Et j’ai également vérifié le chemin d’importation ... j’ai essayé réinstaller pywin32 également mais cela ne supprime pas l'erreur .....

des suggestions .... s'il vous plaît aider

Merci

9
Maxxie

Essayez d'installer pywin32 à partir d'ici:

http://sourceforge.net/projects/pywin32/files/pywin32/

dépend de votre système d’exploitation et de la version de python que vous utilisez. Normalement, la version 32 bits devrait fonctionner sur les systèmes d’exploitation 32 et 64 bits.

15
Nima Soroush

Il s’agit d’un bogue dans la bibliothèque elle-même. Ils ont probablement utilisé une implémentation python différente pour le créer.

Ce qu’ils essaient d’importer, c’est le fichier site-packages\win32\win32api.pyd, mais le dossier win32 ne figure pas dans le chemin dans lequel python effectue la recherche, mais site-packages.

Essayez de remplacer le import win32api (dans win32com\__ init__.py) par from win32 import win32api

15
TulkinRB

J'ai rencontré la même erreur hier avec Python 3.6.1 sur Windows 7 et je l'ai résolu par "pip install pypiwin32".

6
flyisland

Avait la même erreur en essayant d'importer win32com.client (en utilisant Python 2.7, 64 bits). Je suis d'accord avec TulkinRB , il semble y avoir des problèmes de chemin, mais le correctif suggéré ne fonctionne pas pour moi, car je ne pouvais pas non plus importer win32.

Peut-être que mon correctif fonctionnera également dans Python 3.4.

Finalement, installer le fichier .exe de SourceForge en tant qu'administrateur (comme suggéré dans la réponse de Rina Rivera _ { ici ) m'a permis d'importer win32com.client d'IDLE, mais not lorsque j'ai exécuté le script que j'essayais à l'origine d'exécuter. 

En fin de compte, j'ai découvert 3 différences dans sys.path qui avaient été étendues lors de l'installation en tant qu'administrateur et que j'ai ouvert IDLE, mais qui n'ont pas été appliquées lors de l'exécution d'un script. En étendant sys.path dans mon script, j'ai pu éliminer les erreurs d'importation lors de l'exécution:

import sys
sys.path.extend(('C:\\Python27\\lib\\site-packages\\win32', 'C:\\Python27\\lib\\site-packages\\win32\\lib', 'C:\\Python27\\lib\\site-packages\\Pythonwin'))

Enfin, si vous souhaitez plus qu'un correctif temporaire, sys.path peut être étendu de manière permanente en établissant des variables IDLESTARTUP ou PYTHONSTARTUP (comme décrit ici et ici ).

2
hanaQokus

Vous pouvez créer le fichier init.py dans le dossier win32, puis aller dans le dossier win32com et modifier son fichier __init . Py, où il est importé win32api, passez de win32 import win32api

0

J'ai fini par déboguer et copier et coller les fichiers nécessaires dans les dossiers appropriés. C'est une solution de contournement jusqu'à ce que le bogue soit corrigé, mais cela fonctionne. 

0
Bennybear