【问题标题】:ImportError: no module named win32apiImportError:没有名为 win32api 的模块
【发布时间】:2014-02-16 02:27:35
【问题描述】:

我正在使用Python 2.7,我想在Windows 7 上使用pywin32-214。我使用msi 安装程序安装了pywin32-214。但是当我在我的 Python 脚本中导入 win32api 时,它会抛出错误:

no module named win32api. 

我该怎么办?我可以将pywin32 api 用于Windows 7 吗?

【问题讨论】:

  • 您是否安装了多个版本的 Python?如果是这样,您确定要从安装它的同一个导入?
  • 安装 msi 安装程序的路径可能与您尝试导入的路径不同。
  • Claudiu:不,我只在我的电脑上安装了 python 2.7
  • user3193087:实际上,msi 安装程序将文件安装到我的 /python27/... 子目录中。您可以导入安装在子目录中的任何文件。我说的对吗??
  • 我在尝试在 PyCharm 中运行 Jupyter 笔记本时遇到了这个问题。之前还可以,不知道怎么回事……

标签: python winapi


【解决方案1】:

我遇到了同样的问题,我通过重新启动 Python 编辑器和 shell 解决了这个问题。我已经安装了pywin32,但新模块直到重新启动才被拾取。

如果您已经这样做了,请在您的 Python 安装中搜索win32api,您应该会在${PYTHON_HOME}\Lib\site-packages\win32 下找到win32api.pyd

【讨论】:

  • 这对我也有帮助。起初它是行不通的。然后我重新启动了一切,它工作了。
  • 这对我也有帮助!
【解决方案2】:

这是解决我的案例,如发现 Where to find the win32api module for Python?

pip install pypiwin32

【讨论】:

  • 我用的是python2.7,pypiwin32已经安装成功
  • 这仅在我重新启动 Spyder 后对我有用。大多数情况下,新软件包在安装后会立即运行,但在这种情况下不会。
  • 于 2020 年 3 月为 Python 3.7.5 工作!不知道为什么这甚至会持续存在..
  • 我将它与 python2.7 一起使用,我收到错误“错误:找不到满足要求的版本 pywin32>=223(来自 pypiwin32)(来自版本:无)”
【解决方案3】:

我没有在我的 Python 3 dist 中找到投票最多的答案包。

我遇到了同样的问题,安装模块 pywin32 解决了:

在普通的python中:

pip install pywin32

在蟒蛇中:

conda install pywin32

我的 python 安装(适用于 Python 的英特尔® 分发版)存在某种依赖问题,并出现此错误。安装此模块后,它不再出现。

【讨论】:

  • 我使用了conda install pywin32,它成功了。非常感谢。
【解决方案4】:

根据pywin32 github你必须运行

    pip install pywin32

然后,你必须运行

    python Scripts/pywin32_postinstall.py -install

我知道我正在恢复一个旧线程,但我只是遇到了这个问题,这是解决它的唯一方法。

【讨论】:

  • 这对我有用。我在我的项目中使用 pipenv。必须在我的 env 文件夹中运行 post_install.py。
  • 我现在也遇到了一些问题。是否有任何关于为什么它不会运行的见解?我收到这个错误。 Traceback(最近一次调用最后一次):文件“C:\Users\tws07yi\AppData\Local\Programs\Python\Python37\lib\site-packages\win32com_init_.py”,第 32 行,在SetupEnvironment key = win32api.RegOpenKey(HKEY_LOCAL_MACHINE , keyName, 0, KEY_QUERY_VALUE) AttributeError: module 'win32api' has no attribute 'RegOpenKey'
  • @twseewx 尝试以管理员身份运行它。
  • @Juano 我在这里找到了这个页面,github.com/mhammond/pywin32/releases,并将重新下载并安装来自 Python 3.7 的 AMD 64 位版本的二进制文件。
  • @Juano 我使用 .whl 文件安装它,并在全新安装后使用 pip。到目前为止它可以工作,但我需要为我所有的包都这样做,我可以测试它。 pip install 'package' 似乎被我的工作防火墙阻止了....
【解决方案5】:

安装pywin32后

正确安装模块的步骤 (pywin32)

  1. 首先搜索你的 python pip 在哪里

    1a。例如,在我的 pip 位置 - C:\Users\用户名\AppData\Local\Programs\Python\Python36-32\Scripts

  2. 然后打开您的命令提示符并将目录更改为您的 pip 文件夹位置。

    cd C:\Users\username\AppData\Local\Programs\Python\Python36-32\Scripts
    
    C:\Users\username\AppData\Local\Programs\Python\Python36-32\Scripts>pip install 
    pypiwin32
    

重启你的IDE

现在你可以使用模块了。

【讨论】:

    【解决方案6】:

    我已经安装了 pywin32pipywin32,就像之前的答案中建议的那样,但我仍然没有文件夹 ${PYTHON_HOME}\Lib\site-packages\win32。 这在尝试import win32api 时总是会导致错误。

    简单的解决方案是卸载这两个包并重新安装pywin32

    pip uninstall pipywin32
    pip uninstall pywin32
    pip install pywin32
    

    然后重新启动 Python(和 Jupyter)。 现在,win32 文件夹就在那里,导入工作正常。问题解决了。

    【讨论】:

      【解决方案7】:

      以下应该有效:

      pip install pywin32
      

      但它不适合我。我通过从这里下载和安装 exe 解决了这个问题:

      https://github.com/mhammond/pywin32/releases

      【讨论】:

        【解决方案8】:

        就我而言,唯一可行的方法是从 https://pypi.org/project/pywin32/#files 下载适当的轮子,然后使用 --force-reinstall 进行安装。

        pip install pywin32-300-cp37-cp37m-win_amd64.whl --force-reinstall

        【讨论】:

          【解决方案9】:

          这一行: import win32com
          得到了我的错误no module named win32api

          在提升的终端中使用此命令: pip install pywin32-ctypespip install pywin32 并根据显示的错误,替换:
          import win32apifrom win32ctypes.pywin32 import win32api
          import pywintypesfrom win32.lib import pywintypes
          import _win32sysloaderfrom win32 import _win32sysloader
          在您的源文件中,甚至是报告错误的包的文件(如果您选择这种方法,请知道您在做什么)可能会解决此错误。但更好的办法是将相应的目录添加到 python 路径变量中,以便更好地与 python 加载系统集成,更多信息在这里:https://realpython.com/python-import/

          所以我把这个内容:

          python38.zip
          .
          ./lib
          ./lib/site-packages
          ./lib/site-packages/win32
          ./lib/site-packages/win32/lib
          ./lib/site-packages/win32ctypes/pywin32
          ./lib/site-packages/win32ctypes
          
          
          # Uncomment to run site.main() automatically
          #import site
          

          (顺序很重要) 进入这个文件:<python_root_installation_directory>/python38._pth 这样,在使用标准导入时会加载正确的库。如果库中某处有缓存导入,它将起作用,并且库中的导入也起作用。

          这适用于我和我的安装,因此您的环境可能设置不同并且本指南可能不完全兼容,但这是解决问题的一个很好的步骤,也许修改或扩展我的上述步骤可能会导致另一个发行版中的解决方案。

          【讨论】:

            【解决方案10】:

            试试这个,它对我有用,它可能对你有帮助!

             pip install pywin32==225
            

            【讨论】:

              猜你喜欢
              • 2012-07-10
              • 2019-07-31
              • 1970-01-01
              • 2012-07-22
              • 2014-10-08
              • 2019-06-06
              • 2021-05-28
              • 1970-01-01
              相关资源
              最近更新 更多