Поэтому я не понимаю, как заставить pyinstaller создать приложение, использующее win32com. У меня есть скрипт, который без проблем запускается из IDLE или командной строки, который взаимодействует с excel через
xl = Dispatch('Excel.Application')
затем следуют некоторые другие действительно простые вызовы Excel, а затем закрывается. Я видел совет включать «clsctx=pythoncom.CLSCTX_LOCAL_SERVER» в качестве аргумента Dispatch, но это ничего не меняет. Всякий раз, когда я создаю скрипт, я получаю сообщение об ошибке, подобное этому
Traceback (most recent call last):
File "<string>", line 7, in <module>
File "C:\Python27\trunk\iu.py", line 436, in importHook
mod = _self_doimport(nm, ctx, fqname)
File "C:\Python27\trunk\iu.py", line 521, in doimport
exec co in mod.__dict__
File "Myskript\build\pyi.win32\Myskript\outPYZ1.pyz/win32com.client", line 11,
in <module>
File "C:\Python27\trunk\iu.py", line 436, in importHook
mod = _self_doimport(nm, ctx, fqname)
File "C:\Python27\trunk\iu.py", line 521, in doimport
exec co in mod.__dict__
File "Myskript\build\pyi.win32\Myskript\outPYZ1.pyz/win32com.client.gencache",
line 662, in <module>
File "Myskript\build\pyi.win32\Myskript\outPYZ1.pyz/win32com.client.gencache",
line 58, in __init__
File "Myskript\build\pyi.win32\Myskript\outPYZ1.pyz/win32com.client.gencache",
line 649, in Rebuild
File "Myskript\build\pyi.win32\Myskript\outPYZ1.pyz/win32com.client.gencache",
line 65, in _SaveDicts
File "Myskript\build\pyi.win32\Myskript\outPYZ1.pyz/win32com.client.gencache",
line 141, in GetGeneratePath
IOError: [Errno 22] invalid mode ('w') or filename: 'C:\\Python27\\trunk\\Myskri
pt\\dist\\Myskript.exe?844863\\__init__.py'
Это скопировано из этого немецкого вопроса http://www.python-forum.de/viewtopic.php?f=1&t=25010, но моя ошибка в основном такая же. Я пытался реализовать совет, данный на этой странице, но безрезультатно.
Я почти ничего не знаю о материалах COM, просто надеюсь, что это маленькое приложение Excel запустится.
РЕДАКТИРОВАТЬ: Также попытался импортировать pythoncom и запустить «CoInitialize()» (на основе этого парня Вызвать функцию модуля MS Access из Python после сбоя компиляции с помощью py2exe, заявив, что его скрипт работал нормально с pyinstaller), но это тоже ничего не изменило. На самом деле в недоумении здесь и ценю любые советы.
win32com.client.gencache.is_readonly=False
win32com.client.gencache.GetGeneratePath()
pythoncom.CoInitialize()
xl = Dispatch('Excel.Application', clsctx = pythoncom.CLSCTX_LOCAL_SERVER)
- person eric p   schedule 25.07.2012