所以我对如何让pyinstaller构建一个使用win32com的应用程序感到困惑。我有一个脚本,运行没有问题,从空闲或命令行与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上运行得很好),但这也没有改变任何事情。真的不知所措,感谢您的建议。
发布于 2013-06-24 02:06:09
我不确定你是否还在使用py2exe,我正要尝试你的变通方法时,我偶然发现了这个帖子:Call MS Access module function from Python after compiling with py2exe fails
“解决方案”是使用Pyinstaller,它根据您的脚本默认实现了一系列变通方法。我用我的使用excel和word com对象的pywin32脚本尝试了一下,它工作得很好,没有任何调整。
https://stackoverflow.com/questions/11631982
复制相似问题