所以我对如何让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()”(基于这个人Call MS Access module function from Python after compiling with py2exe fails说他的脚本运行正常与pyinstaller)但这也没有改变任何东西。真的在这里不知所措,并感谢任何建议。答案 0 :(得分:0)
我不确定你是否还在使用py2exe,当我偶然发现这个帖子时,我正要尝试你的解决方法: Call MS Access module function from Python after compiling with py2exe fails
“解决方案”使用的是Pyinstaller,默认情况下会根据您的脚本实施一系列变通办法。我用我的pywin32脚本尝试了它,它使用excel和word com对象,它完美地工作,没有任何调整。