所以我很困惑如何让pyinstaller建立一个使用win32com的应用程序。我有一个从空闲或命令行通过pyinstaller和win32com
xl = Dispatch('Excel.Application')
其次是其他一些非常基本的Excel调用与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),但也没有改变任何东西。真的很茫然,并感谢任何建议。
好的,如果有人需要这个,我可以通过从Python/Lib/site-packages/win32com /删除'gens'文件夹来解决它,然后调用Dispatch调用,如下所示:'win32com.client.gencache.is_readonly = False' ()'xx = Dispatch('Excel.Application',clsctx = pythoncom.CLSCTX_LOCAL_SERVER)'''''''''''''' – 2012-07-24 20:19:03