1

そのため、pyinstaller で win32com を使用するアプリケーションをビルドする方法について混乱しています。IDLEまたはコマンドラインから問題なく実行されるスクリプトがあり、Excelとやり取りします

xl = Dispatch('Excel.Application')

その後、他の非常に基本的な Excel 呼び出しが続き、終了します。Dispatch の引数として "clsctx=pythoncom.CLSCTX_LOCAL_SERVER" を含めるようにというアドバイスを見てきましたが、何も変わりません。スクリプトをビルドするたびに、次のようなエラーが発生します

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からコピーされたものですが、私のエラーは基本的に同じです。そのページに記載されているアドバイスを実装しようとしましたが、役に立ちませんでした。

この小さな Excel アプリを実行することを望んでいるだけで、COM に関することはほとんど知りません。

編集:また、pythoncomをインポートして「CoInitialize()」を実行しようとしました(この男Call MS Access module function from Python after compiling with py2exe fails that his script runs fine with pyinstaller に基づいています)しかし、それは何も変更しませんでした。ここで本当に途方に暮れており、アドバイスをいただければ幸いです。

4

1 に答える 1

0

まだ py2exe を使用しているかどうかはわかりません。次のスレッドに出くわしたときに回避策を試しようとしていました: Call MS Access module function from Python after compiling with py2exe fails

「解決策」は、スクリプトに応じてデフォルトで実装されている一連の回避策を持つ Pyinstaller を使用していました。Excel および word com オブジェクトを使用する pywin32 スクリプトで試してみたところ、微調整なしで完全に機能しました。

于 2013-06-23T18:06:09.410 に答える