所以我对如何让 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()”(基于这个家伙在用py2exe编译后从Python调用MS Access模块函数失败说他的脚本在pyinstaller上运行良好)但这也没有改变任何东西。在这里真的很茫然,感谢任何建议。