首页 > 解决方案 > 我无法成功将 pywinauto 导入 python 3.6.4

问题描述

我从“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'

在这一点上,我真的不知道该怎么办。似乎其中一个导入的文件缺少另一个文件需要的东西。我会很感激任何想法......

标签: python-3.xexceptionimportpywinauto

解决方案


可以安装正确的依赖项:

pip install pywin32

以前是这样,pypiwin32但在这些软件包维护中发生了一些变化,并pywin32再次成为官方。pywinauto 0.6.5 将很快反映这些变化。

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


推荐阅读