Python 3.4:ImportError:没有名为win32api的模块

时间:2014-08-12 06:09:06

标签: python pywin32

我在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但是这并没有删除错误.....

任何建议......请帮忙

由于

7 个答案:

答案 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变量(如herehere所述)来永久扩展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?