如何导入win32api

3 投票
2 回答
8547 浏览
提问于 2025-04-15 15:21

我正在尝试用一些python-2.1的代码来控制另一个程序(ArcGIS)。我现在使用的python版本是2.5。当我运行代码时,出现了以下错误信息。

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

我尝试安装了pywin32-214.win32-py2.5.exe,但仍然出现相同的错误信息。我不知道是否需要对我原来的python安装做些什么,以便让它知道我已经安装了这个。

我认为我代码中有问题的部分是以下内容:

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

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

谢谢你的帮助——我对python还很陌生。

2 个回答

1

在导入之前,打印出 sys.path 的内容,确保里面有 win32com 的路径。

2

你的 sys.path 是

['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']

而 winapi.py 文件位于 C:\Python25\Lib\site-packages\isapi\test\build\bdist.win32\winexe\temp 这个地方。

注意,这个文件夹并没有出现在你的 sys.path 里。为了让它正常工作,你需要把 C:\Python25\Lib\site-packages\isapi\test\build\bdist.win32\winexe\temp 加入到你的 sys.path 里。

看起来 winapi.py 还没有被安装。它在一个 test\build...\temp 的文件夹里。我对 Windows 和 Python 的了解不多,也许 winapi.py 附带的文档里有说明如何安装。

一个快速(但不太优雅)的解决办法是手动把需要的文件夹加到 sys.path 里。具体来说,你可以编辑 polyline2geonetwork.py 文件,在文件的顶部加上

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

撰写回答