2012-07-24 136 views
0

所以我很困惑如何让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),但也没有改变任何东西。真的很茫然,并感谢任何建议。

+0

好的,如果有人需要这个,我可以通过从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

回答

0

我不知道,如果你还在使用py2exe,我正要尝试的解决方法时,我一头栽进这个线程: Call MS Access module function from Python after compiling with py2exe fails

的“解决方案”是使用Pyinstaller或已实施了一堆的解决方法默认情况下取决于您的脚本。我试着用我的pywin32脚本,它使用excel和word com对象,并且没有任何调整就完美运行。