python-3.x - 我无法成功将 pywinauto 导入 python 3.6.4
问题描述
我从“pywinauto”的 pip 安装开始并尝试导入它,最初我收到一条消息说该模块win32api
丢失。我尝试了该模块的 pip 安装,但收到一条消息说找不到满意的版本。
然后我从网上下载了它的副本,当我尝试安装它时告诉我我的系统上没有安装 Python 3.6(!)我安装了许多早期版本并担心它们可能会导致一个问题,所以我删除它们并再次尝试,没有成功。我的可执行文件的路径是C:\Python36\python.exe
.
我去了site-packages
文件夹并删除了pywinauto
和pywinauto-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'
在这一点上,我真的不知道该怎么办。似乎其中一个导入的文件缺少另一个文件需要的东西。我会很感激任何想法......
解决方案
可以安装正确的依赖项:
pip install pywin32
以前是这样,pypiwin32
但在这些软件包维护中发生了一些变化,并pywin32
再次成为官方。pywinauto 0.6.5 将很快反映这些变化。
第二个问题看起来像为 UI 自动化类型库生成缓存文件的已知 comtypes 问题。解决方法假定至少第一次以管理员身份运行脚本以访问 comtypes 缓存文件夹。不幸的是,comtypes 维护者并不那么活跃,并且有许多具有非常相似修复的拉取请求,它们仍然没有被接受。
推荐阅读
- vba - 需要对齐数据并消除空白
- python - Power BI 中 Python 可视化的区域设置与 Matplotlib 冲突
- linux - 我必须使用 -fPIC 来创建共享对象库吗?
- sorting - XSLT - 根据子标签对 xml 父段进行排序
- passwords - 重置忘记的 XMPP / Jabber 密码的安全方式
- android - android ...协调器布局错误
- mysql - MySQL - 查询非常慢
- c# - 在 C# WinForm 中依赖和动态更改组合框值列表
- r - 检查面板数据中变量随时间的方差(或弹性)
- c++ - `std::condition_variable::wait_for` 经常调用谓词