3

元の投稿はここにあります:http: //mail.python.org/pipermail/python-win32/2010-December/011011.html

使ってます:

  • OS:64ビットWindows 7 Professional
  • Python:python-2.7.1.amd64
  • Python win32拡張機能:pywin32-214.win-amd64-py2.7
  • Py2exe:py2exe-0.6.9.win64-py2.7.amd64

Windows用のアイコンオーバーレイを作成しようとしています。32ビットWindowsでは正常に動作しましたが、64ビットWindows7では動作しませんでした。

テスト用に作成したPythonモジュールは次のとおりです。

  1. test_icon_overlay.py:(http://mail.python.org/pipermail/python-win32/attachments/20101229/bb8c78a4/attachment-0002.obj )チェックマークオーバーレイアイコンを追加するアイコンオーバーレイ用にPythonで作成されたcomサーバー(C 「C:\icons」フォルダの\icons \ test.ico)

  2. setup_VI.py:(http://mail.python.org/pipermail/python-win32/attachments/20101229/bb8c78a4/attachment-0003.obj )配布用のtest_icon_overlay.dllを作成するセットアップファイル。

  3. icons.zip:(http://mail.python.org/pipermail/python-win32/attachments/20101229/bb8c78a4/attachment-0001.zip )テストするには、C:\内にicons.zipを抽出する必要があります

WindowsコマンドプロンプトでC:\icons実行して再起動すると、フォルダにアイコンオーバーレイが表示されます。しかし、を使用して作成されたdllファイルでは機能しませんpython test_icon_overlay.pyexplorer.exesetup_VI.py

を使用してdllファイルを作成しpython setup_VI.py py2exe、を使用して登録しようとしましたregsvr32 test_icon_overlay.dll。登録が失敗し、Windowsのエラーメッセージが表示されますError 0x80040201 while registering shell extension

次に、ロガーをオンにしましたPython27/Lib/site-packages/py2exe/boot_com_servers.py。これが、私が取得しているトレースバックですcomerror.txtregsvr32 test_icon_overlay.dll

PATH is ['C:\\root\\avalon\\module\\sync\\python\\src\\dist\\library.zip']
Traceback (most recent call last):
  File "boot_com_servers.py", line 37, in <module>
pywintypes.error: (126, 'GetModuleFileName', 'The specified module could not
be found.')
Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'DllRegisterServer' is not defined

win32api.GetModuleFileName(sys.frozendllhandle)64ビットWindows7でのdllビルドに問題があるようです。

また、pywin32-214.win-amd64-py2.764ビットWindows7へのインストールが次のエラーメッセージで終了することを確認しました:スナップショット

close failed in file object destructor:
sys.excepthook is missing
lost sys.stderr

私が間違っていることはありますか?これに関するどんな助けも大歓迎です。

4

1 に答える 1

5

64ビットPythonのpy2exeにバグがあります。py2exeによって初期化されたsys.frozendllhandleが無効であるため、win32api.GetModuleFileName(sys.frozendllhandle)が失敗します。

http://www.lfd.uci.edu/~gohlke/pythonlibs/#py2exeでパッチを適用したpy2exeインストーラーを試してみることをお勧めします

于 2011-01-06T23:28:47.193 に答える