Ошибка Py2Exe, вызванная pywinauto в некоторых системах: «AttributeError: объект« модуль »не имеет атрибута« CUIAutomation » - PullRequest
1 голос
/ 06 июля 2019

Я выкатываю EXE на несколько Windows 2012 R2, и большинство из них работает нормально.Однако, по-видимому, при том же условии, у меня есть несколько сообщений, которые выдают ошибку: AttributeError: у объекта 'module' нет атрибута 'CUIAutomation'

Я имел обыкновение просто иметь:

from pywinauto.findwindows import find_window
from pywinauto.win32functions import SetForegroundWindow

И я попытался также добавить:

import pywinauto

Но это мало что дало.Я также попытался изменить код, поэтому вместо find_window я использовал полный pywinauto.findwindows.То же самое для SetForegroundWindow.

Мой список импорта.Извините, если это неряшливый или избыточный, я новичок и самообучающийся.

import requests
import json
import os
import winshell
import sys
import re
import subprocess
import win32gui
import win32api
import win32con
import os.path
import ctypes
import fnmatch
import urllib2
import shutil
import psutil
import pywinauto
from pywinauto.findwindows import find_window
from pywinauto.win32functions import SetForegroundWindow
from pathlib import Path
from win32com.client import Dispatch
from stat import S_IREAD, S_IRGRP, S_IROTH
from time import sleep
from bs4 import BeautifulSoup

На самом деле единственное место, где я использую pywinauto в моем скрипте:

SetForegroundWindow(find_window(title_re = r'Server*'))

py2exe errorпри запуске для некоторых систем:

File "SVMon.py", line 17, in <module>
File "c:\users\administrator\appdata\local\temp\pip-install-dm1p2f\PyInstaller\PyInstaller\loader\pyimod03_importers.py", line 395, in load_module
File "site-packages\pywinauto\__init__.py", line 89, in <module>
File "c:\users\administrator\appdata\local\temp\pip-install-dm1p2f\PyInstaller\PyInstaller\loader\pyimod03_importers.py", line 395, in load_module
File "site-packages\pywinauto\findwindows.py", line 42, in <module>
File "c:\users\administrator\appdata\local\temp\pip-install-dm1p2f\PyInstaller\PyInstaller\loader\pyimod03_importers.py", line 395, in load_module
File "site-packages\pywinauto\controls\__init__.py", line 36, in <module>
File "c:\users\administrator\appdata\local\temp\pip-install-dm1p2f\PyInstaller\PyInstaller\loader\pyimod03_importers.py", line 395, in load_module
File "site-packages\pywinauto\controls\uiawrapper.py", line 47, in <module>
File "c:\users\administrator\appdata\local\temp\pip-install-dm1p2f\PyInstaller\PyInstaller\loader\pyimod03_importers.py", line 395, in load_module
File "site-packages\pywinauto\uia_defines.py", line 181, in <module>
File "site-packages\pywinauto\uia_defines.py", line 169, in _build_pattern_ids_dic
File "site-packages\pywinauto\uia_defines.py", line 50, in __call__
File "site-packages\pywinauto\uia_defines.py", line 63, in __init__
AttributeError: 'module' object has no attribute 'CUIAutomation'
[1928] Failed to execute script SVMon

1 Ответ

1 голос
/ 07 июля 2019

Я решил исправить это с помощью PyInstaller, и я не совсем уверен, что сделал, но я добавил каждый скрытый импорт, который мог придумать:

pyinstaller --hidden-import comtypes.gen.UIAutomationClient --hidden-import comtypes --hidden-import comtypes.gen --hidden-import comtypes.patcher --hidden-import comtypes.GUID --hidden-import pywinauto --hidden-import pywinauto.CUIAutomation --hidden-import pywinauto.findwindows --hidden-import pywinauto.findwindows VPSMonitor.py --onefile --clean
...