【问题标题】:I am unable to successfully import pywinauto into python 3.6.4我无法成功将 pywinauto 导入 python 3.6.4
【发布时间】:2018-11-17 17:01:58
【问题描述】:

我从“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.x exception import pywinauto


    【解决方案1】:

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

    pip install pywin32
    

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

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

    【讨论】:

    • Vasily,我尝试了“pip install pywin32”并得到“要求已经满足:c:\python36\lib\site-packages 中的 pywin32”。我希望你能澄清你在第二段中的意思。看来您是在建议我让管理员第一次尝试导入该模块?我应该要求他/她做一些特别的事情吗?请理解,我对此很陌生,有点困惑。
    • 好的,你已经安装了pyWin32,这不再是问题了。对于comtypes 问题,您应该右键单击cmd.exe 并选择上下文菜单选项“以管理员身份运行”,然后在确认对话框中按“是”。当cmd.exe启动时,运行python &lt;path_to_your_script.py&gt;
    • @VasilyRyabov 面临完全相同的问题。以管理员身份运行脚本没有帮助。
    • @VasilyRyabov 你的意思是C:\Python36\Lib\site-packages\comtypes\gen 目录吗?这样做了,但它一直抛出 ImportError: Typelib newer than module 错误。
    • @Madhur 需要在删除缓存目录之前将comtypes 降级pip install comtypes==1.1.2。我刚刚在 comtypes 中修复了它,希望 comtypes==1.1.5 将在本周末发布。
    猜你喜欢
    • 1970-01-01
    • 2018-07-31
    • 2018-10-26
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多