5

Windowsでpy2exe0.6.9とPython2.6.4を使用してPythonアプリケーションをバンドルしようとしています。実行可能ファイルは、ビルドに使用したシステムでは問題なく実行されますが、別のシステムで実行しようとすると失敗します。

C:\Documents and Settings\Administrator\Desktop\dist>.\backend.exe install
Traceback (most recent call last):
  File "boot_service.py", line 6, in <module>
  File "zipextimporter.pyo", line 82, in load_module
  File "win32serviceutil.pyo", line 9, in <module>
  File "zipextimporter.pyo", line 98, in load_module
ImportError: MemoryLoadLibrary failed loading win32api.pyd

ライブラリが欠落しているという強い予感がありますが、特に依存関係チェッカーがターゲットシステムで欠落しているものとしてフラグを立てていないため、どちらが不足しているかはわかりません。どうすればいいですか?

4

4 に答える 4

7

https://stackoverflow.com/questions/1979486/py2exe-win32api-pyc-importerror-dll-load-failedと同じ質問。

setup.pyを見て、システムに含まれているこれらのdllを除外します。

 'dll_excludes': [ "mswsock.dll", "powrprof.dll" ]

それはあなたを助けます!

于 2010-11-02T04:41:27.150 に答える
1

dllと依存関係のチェックを手動で行うことができます。exeを生成すると、必要な/使用されているdllが出力されることに気付いたと思います。exeが機能していないシステム、dllが存在するかどうか、およびそれらが同じバージョンであるかどうかを確認します。

もう1つ。exeだけでなく、distフォルダー全体が必要なため、distフォルダー全体をシステムにコピーしますか、それともexeだけにコピーしますか。

于 2010-02-26T07:00:54.443 に答える
1

64ビット/ビスタでpy2exe変換を行っていますか?

私はvista64bitでコードを書いていますが、作成した.exeファイルは通常32ビットXPでは機能しません(これらは私が手元にある2台のマシンです)。

.exeは、トレースバックを含むテキストファイルを適切にスローし、64ビットウィンドウはwin32api.dllを使用しているように見えます。これは、64ビットウィンドウが32ビットOSの動作を複製するために使用する.dllであると想定しているため、同じスクリプトを使用して32ビットXPで変換を実行します。お役に立てば幸いです。

于 2010-02-26T20:22:49.290 に答える
0

将来ここに来る人のためだけに。あらゆる種類のwin32ライブラリを使用していて、このタイプのエラーが発生しない場合は、次の手順を実行できます。

  • 問題の問題は、win32関数のdllファイルとpy2exeの自動的にdllファイルの間に競合があることです。したがって、この競合を解決するには、関数に必要なdllファイルを知ってから、これらのファイルをセットアップオプションから除外する必要があります。

例:

次のコードによると:

import win32crypt
win32crypt.CryptUnprotectData(...)

CryptUnprotectData関数を使用したので、CryptUnprotectDataに必要なdllを検索しました。次の情報を見つけました。ここにリンクの説明を入力してください。ご覧のとおり、
「Crypt32.dll」が必要です。

だから私はsetup.pyをそのように編集します

includes = ["win32crypt"]
dll_excludes=["Crypt32.dll"]


setup(
    options = {'py2exe': {'bundle_files': 1, 'compressed': True,'dll_excludes': dll_excludes,'includes': includes}})

そしてそれは完璧に機能しました。

于 2016-07-02T03:12:26.983 に答える