Проблемы при попытке отправки COM-объекта SASEGObjectModel с помощью Python с использованием win32com - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь использовать pywin32 для управления SAS Enterprise Guide с помощью Python. Но я сталкиваюсь с некоторыми ошибками. Я пробовал и Dispatch и EnsureDispatch, но оба возвращают ту же ошибку:

Traceback (most recent call last):
  File "C:\ProgramData\Anaconda3\lib\site-packages\win32com\client\dynamic.py", line 89, in _GetGoodDispatch
    IDispatch = pythoncom.connect(IDispatch)
pywintypes.com_error: (-2147221021, 'Operation unavailable', None, None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\Users\xxxxxxx\Desktop\test.py", line 4, in <module>
    sas = EnsureDispatch('SASEGObjectModel.Application.7.1')
  File "C:\ProgramData\Anaconda3\lib\site-packages\win32com\client\gencache.py", line 527, in EnsureDispatch
    disp = win32com.client.Dispatch(prog_id)
  File "C:\ProgramData\Anaconda3\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
    dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
  File "C:\ProgramData\Anaconda3\lib\site-packages\win32com\client\dynamic.py", line 114, in _GetGoodDispatchAndUserName
    return (_GetGoodDispatch(IDispatch, clsctx), userName)
  File "C:\ProgramData\Anaconda3\lib\site-packages\win32com\client\dynamic.py", line 91, in _GetGoodDispatch
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
pywintypes.com_error: (-2147024809, 'The parameter is incorrect.', None, None)

(Это при использовании EnsureDispatch, ошибка при использовании Dispatch практически одинакова, только без 2-й и 3-й строк после второй трассировки).

Кроме того, я попытался запустить makepy (из той же библиотеки), чтобы посмотреть, что он вернет, и я получил следующее сообщение:

Не удалось найти библиотеку типов, соответствующую 'SASEGObjectModel.Application.7.1'

Если я попытаюсь сделать это с помощью VBS, используя следующий код:

Set app = CreateObject("SASEGObjectModel.Application.7.1")

WScript.echo app.Name

В нем отображается окно сообщения с надписью «Руководство для предприятия», показывающее, что объект доступен для системы.

1 Ответ

0 голосов
/ 14 мая 2019

Я пытался обратиться за помощью в Сообщество поддержки SAS, а после многих интересных предложений я все еще не мог решить эту проблему.Но одной вещью, которую я не пробовал и в итоге заработал, была установка свежей установки python (не Anaconda), установка PyWIN, и она просто работала.

...