web-dev-qa-db-ja.com

一部のWindows7マシンでPyinstalleronefileが起動しない

一部のWindowsマシンでは正常に動作し、他のマシンでは失敗するexeファイルを作成しました。

失敗の原因はまだわかりませんでした。

重要なデータ:

  • x64exe
  • Windows 7
  • Python 3.5.1
  • pyinstaller 3.0
  • onefile

DEBUGは次のことを示しています。

C:\temp\r>mytool_debug.exe
PyInstaller Bootloader 3.x
LOADER: executable is C:\temp\r\mytool_debug.exe
LOADER: homepath is C:\temp\r
LOADER: _MEIPASS2 is NULL
LOADER: archivename is C:\temp\r\mytool_debug.exe
LOADER: Extracting binaries
LOADER: Executing self as child
LOADER: set _MEIPASS2 to C:\temp\_MEI55762
LOADER: Setting up to run child
LOADER: Creating child process
LOADER: Waiting for child process to finish...
PyInstaller Bootloader 3.x
LOADER: executable is C:\temp\r\mytool_debug.exe
LOADER: homepath is C:\temp\r
LOADER: _MEIPASS2 is C:\temp\_MEI55762
LOADER: archivename is C:\temp\r\mytool_debug.exe
LOADER: SetDllDirectory(C:\temp\_MEI55762)
LOADER: Already in the child - running user's code.
LOADER: manifestpath: C:\temp\_MEI55762\mytool.exe.manifest
LOADER: Activation context created
LOADER: Activation context activated
LOADER: Python library: C:\temp\_MEI55762\python35.dll
Error loading Python DLL: C:\temp\_MEI55762\python35.dll (error code 127)
LOADER: Back to parent (RC: -1)
LOADER: Doing cleanup
LOADER: Freeing archive status for C:\temp\r\mytool_debug.exe

ウィンドウに表示されるエラーメッセージもあります。

Entry Point Not Found

The procedure entry point ucrtbase.terminate could not be located in the dynamic link library api-ms-win-crt-runtime-l1-1-0.dll 

すべてのファイルをC:\ temp_MEI55762(ブートローダーがすべてのファイルを抽出した場所)からディレクトリC:\ temp\r(mytool_debug.exeがある場所)にコピーしてmytool_debug.exeを実行すると機能します。

前述のように、mytool.exeは他のWindows7/8コンピューターでも正常に動作します。上記のエラーが原因で動作しないコンピューターを2台見つけました。

どこから検索を開始すればよいですか?

9
kotlet schabowy

約200のWindowsUpdateをインストールした後、エラーはなくなりました。

必要な更新は KB2999226 によって対処されます

8
kotlet schabowy

ここでは、Windows Updateをインストールするのではなく、ビルド側のソリューションに向けて取り組んでいるこれについての議論があります: https://github.com/pyinstaller/pyinstaller/issues/1566 。今日(2017年5月9日)の時点では、まだ確固たる解決策はありません。一部の人々のために働いている2つの解決策があります:

  • Windows 10 SDK をインストールし、ucrt DDLディレクトリをシステムパス(C:\ Program Files\Windows Kits\10\Redist\ucrtまたはC:\ Program Files(x86)\ Windows Kits \ビルドする前に、10\Redist\ucrt\DLLs\x64(システムによって異なります)

  • 3.5+の代わりにPython 3.4を使用してビルドします

1
Daniel Holmes