【问题标题】:Python 3.4 :ImportError: no module named win32apiPython 3.4:ImportError:没有名为 win32api 的模块
【发布时间】:2014-08-12 06:09:05
【问题描述】:

我在 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: no module named win32api

虽然我已经从http://www.lfd.uci.edu/~gohlke/pythonlibs/#pywin32 安装了pywin32 我还检查了我导入的路径。我也尝试过重新安装 pywin32,但这并没有消除错误。

【问题讨论】:

  • 只是为了确保:您安装了适用于 Python 3.4 的版本,以及适用于 win32 或 win-amd64 的版本,无论哪一个与您的 Python 安装相匹配,对吧?
  • 另外,直接从交互式解释器尝试import win32api。而且,当我们这样做的时候,import importlib; print(importlib.util.find_spec('win32api'))
  • thnxx @abarnert .... 现在要试试这个。
  • @Maxxie 你从那个链接下载了哪个文件?
  • @Patrick 我下载了 - pywin32‑219.win32‑py3.4.exe ...没关系,我猜是因为我使用 python 3.4

标签: python python-3.x pywin32


【解决方案1】:

尝试从这里安装 pywin32:

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

取决于您的操作系统和您使用的 python 版本。通常 32 位版本应该适用于 32 位和 64 位操作系统。

编辑:移至https://github.com/mhammond/pywin32/releases

【讨论】:

    【解决方案2】:

    这是库本身的一个错误,可能他们使用了不同的 python 实现来创建它。

    他们试图导入的是site-packages\win32\win32api.pyd文件,但是win32文件夹不在python搜索的路径中,但site-packages在。

    尝试将import win32api(win32com\__init__.py内)替换为from win32 import win32api

    【讨论】:

    • 当 (1) pip install pypiwin32 和 (2) Nima 的答案对我都不起作用(Win 10 上的 Python 3.7 64 位)时,我成功尝试了你的答案 (3),但在重新启动后 (4) , import win32api 也可以。不知道(3)或(4)是否成功。也可能不需要 (2)。
    【解决方案3】:

    我昨天在 Windows 7 上使用 Python 3.6.1 时遇到了同样的错误,并通过“pip install pypiwin32”解决。

    【讨论】:

      【解决方案4】:

      在尝试导入 win32com.client(使用 Python 2.7,64 位)时遇到同样的错误。我同意TulkinRB,似乎存在路径问题,但建议的修复对我不起作用,因为我也无法导入 win32。

      也许我的修复也适用于 Python 3.4。

      最终,以管理员身份从 SourceForge 安装 .exe(如 Rina Rivera 的回答 here 中所建议的那样)允许我从 IDLE 导入 win32com.client,但 不是我执行了我最初尝试运行的脚本。

      最后,我在以管理员身份安装并打开 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。

      【讨论】:

        【解决方案5】:

        我最终调试并将必要的文件复制并粘贴到适当的文件夹中。在修复错误之前,这是一种解决方法,但它可以工作。

        【讨论】:

          【解决方案6】:

          你可以在win32文件夹里面创建__init.py文件,然后进入win32com文件夹里面修改它的__init__.py文件,这里是import win32api,改成from win32 import win32api

          【讨论】:

            【解决方案7】:

            来自https://github.com/mhammond/pywin32/issues/1151#issuecomment-360669440

            将“pypiwin32_system32”路径附加到您的系统 PATH,

            在脚本中可以这样做:

            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?

            【讨论】:

              猜你喜欢
              • 2014-02-16
              • 2012-07-10
              • 2019-07-31
              • 2017-12-30
              • 2012-07-22
              • 2014-10-08
              • 2019-06-06
              • 2021-05-28
              相关资源
              最近更新 更多