导入错误:找不到名为pywintypes的模块。

26

我正在使用Python编写一个小型键盘记录器,使用了pyHook、pythoncom和Pywin32模块。以下是我的代码:

import pyHook, pythoncom, sys, logging

file_log = 'C:\\important\\log.txt'

def OnKeyboardEvent (event):
    logging.basicConfig(filename=file_log, level=logging.DEBUG, format='%(message)s')
    chr(event.Ascii)
    logging.log(10, chr(Event.Ascii))
    return True
hooks_manager=pyHook.HookManager()
hooks_manager.KeyDown = OnKeyboardEvent
hooks_manager.HookKeyboard()
pythoncom.PumpMessages()

运行时,它返回以下错误消息:

 File "C:\Python27\lib\site-packages\pythoncom.py", line 2, in <module>
    import pywintypes
ImportError: No module named pywintypes

我该如何修复这个错误?

7个回答

26

pywintypesPython for Windows extensions的一部分,也被称为pywin32。您需要安装它才能访问pywintypes

请注意,截至本文撰写时,pywin32的维护者不会将文件上传到PyPI,因此您必须从http://pywin32.sf.net获取适当版本的安装程序。


14
需要安装 pypiwin32,可以使用命令 pip install pypiwin32 进行安装。 - eri0o
2
请注意,截至本文撰写时,pypiwin32仅有3.6版本的文件可用,因此该命令只能成功针对该特定版本。 - ivan_pozdeev
2
这里也有同样的问题。pip install 显示 "Requirement already satisfied: pypinwin32 , and pywin32 >= 223." 但是,当我 import pyttsx3 时,import pywintypes 却显示 "no module named ..."。 - Max
@Max 这里也有同样的问题。 - Caner Burc BASKAYA
@Max 这里也是同样的问题。 - undefined

23

pip install pypiwin32 对我来说行了。


15

对我来说,从以下位置复制文件(pythoncom38.dll和pywintypes38.dll)有效:

C:\Users\"Your user id"\AppData\Roaming\Python\Python38\site-packages\pywin32_system32

到这条路径:

C:\Users\"Your user id"\AppData\Roaming\Python\Python38\site-packages\win32\lib

C:\Users\"Your user id"\AppData\Roaming\Python\Python38\site-packages\win32
  • 在安装Visual Studio之后,我有时需要在复制文件后重新启动计算机。

1
我在一个全新安装的Windows 10机器上安装使用pyttsx3的脚本时遇到了这个问题,你的解决方案完美地解决了它。为什么这个问题在11月份仍然存在?这是pypiwin32包的问题吗?难道没有人报告过这个问题吗? - AlexRamallo

2

我知道我的回答有点晚,但最近遇到了这个问题。在我的虚拟环境中安装了pywin32和pypiwin32后,我的应用程序在测试期间运行良好。但是当我运行pyinstaller来构建我的exe文件时,出现了这个错误。

解决方案: 我需要在我的基本python环境(而不是虚拟环境)中安装(通过pip)pywin32和pypiwin32,以便pyinstaller可以构建我的exe文件。

注:Original Answer翻译成“最初的回答”


你如何在基本环境中安装?我有同样的问题。 - Ram
只需在您的系统(全局)中安装pywin32和pypiwin32,而不仅仅是在特定的虚拟环境中安装。 - trashvin

2
通常我会使用import pywintypes或者使用引用该库的程序。但是,在升级到Windows 11之后,这个导入包突然无法正常工作了。
我使用PIP卸载了pywin32,并重新安装它(放在了我的全局python环境中)。这个方法有效,现在我可以进行import操作了。只是提一下,因为这是一个简单易行的步骤。

我在Windows 11上使用Python 3.10和IDLE来运行代码时,出现了"No module named pywintypes"的错误。后来我尝试使用pip卸载pywin32: pip uninstall pywin32,并重新安装:pip install pywin32。我还关闭了IDLE并重新启动,然后打开.py文件并运行它,这样就解决了问题! - Harry

1

只需将pythoncom34.dll和pywintypes34.dll添加到您的C:\Python34\目录即可。


1

我尝试使用pywin32模块创建Python服务时遇到了这个错误。我将pythoncom38.dllpywintypes38.dll复制到项目的根目录中,问题得到了解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接