无法成功将pywinauto导入到Python 3.6.4中。

3
我开始使用“pywinauto”的pip安装,试图导入它,但最初出现了一个消息,指出缺少模块win32api。我尝试了该模块的pip安装,但收到一条消息,表示找不到符合要求的版本。
然后我从网上下载了一个副本,但安装时告诉我系统上没有安装Python 3.6(!)我安装了早期版本的多个程序,并担心它们可能会引起问题,因此我删除了它们并再次尝试,但没有成功。可执行文件路径为C:\ Python36 \ python.exe
我进入了site-packages文件夹,删除了pywinautopywinauto-0.6.4-py3.6.egg-info文件夹,然后进行了全新的pip安装,安装完成后显示消息:“成功安装 pywinauto-0.6.4”,然后再次尝试导入它。
这次我得到了以下结果:
import pywinauto

File "C:\Python36\lib\site-packages\pywinauto\__init__.py", line 72, in <module>
from . import findwindows
File "C:\Python36\lib\site-packages\pywinauto\findwindows.py", line 42, in <module>
from . import controls
File "C:\Python36\lib\site-packages\pywinauto\controls\__init__.py", line 36, in <module>
from . import uiawrapper # register "uia" back-end (at the end of uiawrapper module)
File "C:\Python36\lib\site-packages\pywinauto\controls\uiawrapper.py", line 46, in <module>
from ..uia_defines import IUIA
File "C:\Python36\lib\site-packages\pywinauto\uia_defines.py", line 181, in <module>
pattern_ids = _build_pattern_ids_dic()
File "C:\Python36\lib\site-packages\pywinauto\uia_defines.py", line 169, in _build_pattern_ids_dic
if hasattr(IUIA().ui_automation_client, cls_name):
File "C:\Python36\lib\site-packages\pywinauto\uia_defines.py", line 50, in __call__
cls._instances[cls] = super(_Singleton, cls).__call__(*args, **kwargs)
File "C:\Python36\lib\site-packages\pywinauto\uia_defines.py", line 63, in __init__
self.ui_automation_client.CUIAutomation().IPersist_GetClassID(),
AttributeError: module 'comtypes.gen.UIAutomationClient' has no attribute 'CUIAutomation'

此时我真的不知道该怎么办了。似乎其中一个导入的文件缺少另一个文件需要的东西。如果有任何想法,我将不胜感激......

1个回答

0

正确的依赖关系可以这样安装:

pip install pywin32

以前是pypiwin32,但这些包的维护发生了一些变化,pywin32再次成为官方版本。pywinauto 0.6.5很快将反映这些变化。

第二个问题看起来像是已知的comtypes问题,用于生成UI自动化类型库的缓存文件。解决方法是至少第一次以管理员身份运行脚本,以便访问comtypes缓存文件夹。不幸的是,comtypes的维护者并不那么活跃,有许多具有非常相似修复的拉取请求,它们仍然未被接受。


好的,您已经安装了pyWin32,并且这不再是一个问题。对于“comtypes”问题,您应该右键单击“cmd.exe”,选择上下文菜单选项“以管理员身份运行”,然后在确认对话框中按“是”。当“cmd.exe”启动时,请运行“python <path_to_your_script.py>”。 - Vasily Ryabov
@VasilyRyabov 遇到了完全相同的问题。以管理员身份运行脚本也没有帮助。 - Madhur
@VasilyRyabov 你是指 C:\Python36\Lib\site-packages\comtypes\gen 目录吗?我试过了,但它一直抛出 ImportError: Typelib newer than module 错误。 - Madhur
@Madhur需要通过pip install comtypes==1.1.2降级comtypes,然后再删除缓存目录。我已经在comtypes中修复了这个问题,希望comtypes==1.1.5能在本周末发布。 - Vasily Ryabov
@VasilyRyabov,pip上没有1.1.2版本的comtypes,尝试安装1.1.3.post2版本,但出现了TypeError: '_NamespacePath' object does not support indexing错误。 - Madhur
显示剩余2条评论

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