win32com имеет другое поведение при запуске из * .exe или * .py - PullRequest
1 голос
/ 18 июня 2020

У меня есть проект Python, разработанный коллегой, в котором win32com используется для управления приложением: CANoe from Vector.

Когда он запускает сценарий * .py из PyCharm (2019.2.5 ) все в порядке, если он использовал auto-py-to-exe для преобразования сценария python в * .exe, а затем запускал * .exe, все в порядке, в обоих случаях сценарий работает отлично.

Теперь проблема в следующем: если я пытаюсь запустить сценарий * .py из PyCharm (2020.1.2), модуль win32com выдает исключение:

raise AttributeError("'%s' object has no attribute '%s'" % (repr(self), attr))
AttributeError: '<win32com.gen_py.CANoe 11.0 Type Library.ITestEnvironment instance at 0x2039251561776>' object has no attribute 'TestModules'

От чего Я проверил, что в COM-библиотеке есть 2 диспетчерских интерфейса: ITestEnvironment и ITestEnvironment2 , и только ITestEnvironment2 имеет атрибут TestModules , и кажется, что в В моем случае сценарий каким-то образом не учитывает правильный интерфейс.

Если я использую auto-py-to-exe для преобразования сценария python в * .exe, а затем выполняю * .exe, все работает прекрасно. Если он преобразует сценарий в * .exe, а затем я запускаю его на своем P C, или я локально конвертирую сценарий в * .exe и запускаю его на своем P C, в обоих случаях выход из сценария то же самое.

Я пробовал:

  • Установите ту же версию PyCharm, что и он
  • Запустите код из Visual Studio 2017
  • Обновите pywin32 до последней версии (228)

во всех случаях результат один и тот же.

Я использую ту же версию Python, что и он: Py 3.6.7.

Знает ли кто-нибудь, почему win32com ведет себя по-разному при запуске из * .exe или * .py, а также почему он ведет себя по-разному на разных ПК?

...