2009-10-24 5 views
4

J'essaie d'utiliser du code python-2.1 pour contrôler un autre programme (ArcGIS). La version de python que j'utilise est 2.5. Je reçois le message d'erreur suivant lorsque je cours le code.Erreur d'importation python

<type'exceptions.ImportError'>: No module named win32api 
Failed to execute (polyline2geonetwork2). 

J'ai essayé d'installer pywin32-214.win32-py2.5.exe mais je reçois toujours le même message d'erreur. Je ne peux pas comprendre si j'ai besoin de faire quoi que ce soit à mon installation python d'origine, donc il sait que j'ai installé cela.

Je pense que la partie problématique de mon code est le suivant:

import win32com.client, sys, string, os, re, time, math 

gp = win32com.client.Dispatch("esriGeoprocessing.GpDispatch.1") 
conn = win32com.client.Dispatch(r'ADODB.Connection') 

Merci pour votre aide - Je suis tout à fait nouveau pour python.

+0

début IDLE. tapez import win32com.client et appuyez sur Entrée. Avez-vous un message d'erreur? – foosion

+1

Avez-vous un fichier appelé win32api.py? ? Quel est son chemin complet? Le répertoire contenant win32api.py doit être dans sys.path pour que Python puisse le trouver. – unutbu

+0

import win32.com fonctionne correctement - je ne reçois pas de message d'erreur. J'ai trouvé win32api.py ici: C: \ Python25 \ Lib \ paquets-de-site \ isapi \ test \ build \ bdist.win32 \ winexe \ temp – womble

Répondre

1

impression sur sys.path juste avant l'importation et assurez-vous que le chemin de win32com est là

+0

win32com n'est pas là, même si je l'ai importé au préalable. win32 est bien. – womble

0

tout le monde s'il vous plaît lire le message d'erreur: « Aucun module nommé win32api » dire non win32com

Mettez un peu de diagnostic bourrer le haut de votre script, par exemple

import sys 
print sys.version 
print sys.path 
print sys.argv[0] 

et de réduire le reste de votre script au minimum nécessaire pour reproduire le problème. B) la sortie, le retraçage exact et le message d'erreur, reproduits par copier/coller dans et édité la version de votre question, c'est-à-dire ne retapez rien de celui-ci.

2

Votre sys.path est

['C:\\Documents and Settings\\david\\My Documents\\GIS_References\\public\\funconn_public', 'C:\\Python25\\Lib\\idlelib', 'C:\\Program Files\\ArcGIS\\bin', 'C:\\WINDOWS\\system32\\python25.zip', 'C:\\Python25\\DLLs', 'C:\\Python25\\lib', 'C:\\Python25\\lib\\plat-win', 'C:\\Python25\\lib\\lib-tk', 'C:\\Python25', 'C:\\Python25\\lib\\site-packages', 'C:\\Python25\\lib\\site-packages\\win32', 'C:\\Python25\\lib\\site-packages\\win32\\lib', 'C:\\Python25\\lib\\site-packages\\Pythonwin'] 

et winapi.py est situé dans C: \ Python25 \ Lib \ site-packages \ ISAPI \ test \ build \ bdist.win32 \ winexe \ temp.

Notez que ce répertoire n'est pas répertorié dans votre sys.path. Pour que cela fonctionne, vous devez placer C: \ Python25 \ Lib \ site-packages \ isapi \ test \ build \ bdist.win32 \ winexe \ temp dans votre sys.path.

Apparemment, winapi.py n'est pas encore installé. C'est dans un répertoire test \ build ... \ temp. Je ne connais pas beaucoup Windows + Python. Peut-être qu'il existe une documentation fournie avec winapi.py qui explique comment l'installation est supposée être réalisée.

Une solution rapide (mais moche) consiste à insérer manuellement le répertoire nécessaire dans sys.path. Je veux dire par, vous pouvez modifier polyline2geonetwork.py et mettre

import sys 
sys.path.append(r'C:\Python25\Lib\site-packages\isapi\test\build\bdist.win32\winexe\temp') 

près du haut du fichier.