我在Windows 7上使用python 3.4。为了打开doc文件,我正在使用此代码
import sys
import win32com.client as win32
word = win32.Dispatch("Word.Application")
word.Visible = 0
word.Documents.Open("MyDocument")
doc = word.ActiveDocument
我不确定为什么每次都会弹出这个错误
ImportError:没有名为win32api的模块
虽然我已经从http://www.lfd.uci.edu/~gohlke/pythonlibs/#pywin32安装了pywin32 我也检查了我导入的路径...我已经尝试重新安装pywin32但是这并没有删除错误.....
任何建议......请帮忙
由于
答案 0 :(得分:17)
尝试从这里安装pywin32:
http://sourceforge.net/projects/pywin32/files/pywin32/
取决于您的操作系统和您正在使用的python版本。通常32位版本应该适用于32位和64位操作系统。
答案 1 :(得分:15)
这是库本身的一个错误,可能是他们使用了不同的python实现来创建它。
他们试图导入的是site-packages \ win32 \ win32api.pyd文件,但win32文件夹不在python搜索的路径中,但是site-packages是。
尝试将import win32api
(在win32com \ __ init__.py内)替换为from win32 import win32api
答案 2 :(得分:9)
我在Windows 7上遇到了与Python 3.6.1相同的错误,并通过“pip install pypiwin32”解决了它。
答案 3 :(得分:2)
尝试导入win32com.client时遇到同样的错误(使用Python 2.7,64位)。我同意TulkinRB,似乎存在路径问题,但修正建议对我不起作用,因为我也无法导入win32。
也许我的修复也适用于Python 3.4。
最后,以管理员身份SourceForge安装。{Rina Rivera的答案here中的建议)允许我从IDLE导入win32com.client,但是当我执行原本试图运行的脚本时,不。
最后,我发现在作为admin安装并打开IDLE时已扩展的sys.path中存在3个差异,但在执行脚本时未应用。通过在我的脚本中扩展sys.path,我能够在执行时删除导入错误:
import sys
sys.path.extend(('C:\\Python27\\lib\\site-packages\\win32', 'C:\\Python27\\lib\\site-packages\\win32\\lib', 'C:\\Python27\\lib\\site-packages\\Pythonwin'))
最后,如果您需要的不仅仅是临时修复,可以通过建立IDLESTARTUP或PYTHONSTARTUP变量(如here和here所述)来永久扩展sys.path。
答案 4 :(得分:0)
我最终调试并复制并将必要的文件粘贴到相应的文件夹中。它是一个解决方法,直到bug被修复,但它的工作原理。
答案 5 :(得分:0)
您可以在win32文件夹中创建 init.py文件,然后进入win32com文件夹并更改其__init .py文件,其中导入win32api,更改为win32 import win32api < / p>
答案 6 :(得分:0)
来自https://github.com/mhammond/pywin32/issues/1151#issuecomment-360669440
将“pypiwin32_system32”路径附加到您的系统路径中,
在脚本中,这可以像这样完成:
import os
sitedir='C:/where_ever/'
os.environ["PATH"]+=(';'+os.path.join(sitedir,"pypiwin32_system32"))
...
来自 PowerShell
$env:PATH="$PATH;C:\where_ever\pywin32_system32";
python.exe ...
有关站点目录的帮助,请参阅 What is python's site-packages directory?