Pyinstaller onefile在某些Windows 7计算机上无法启动

我创build了一个exe文件,在一些Windows机器上正常工作,并在其他人失败。

我还找不到失败的原因。

重要数据:

  • x64 exe
  • 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适用于其他Windows 7/8电脑。 我find了2台电脑,因为没有上述的错误。

我应该从哪里开始search?

安装大约200个Windows更新后,错误消失了。

所需的更新由KB2999226解决

这里有一个讨论关于这个工作,而不是必须安装Windows Update的构建方面的解决方案: https : //github.com/pyinstaller/pyinstaller/issues/1566 。 截至今天(2017年5月9日),还没有确切的解决方案。 有两种解决方案已经为一些人工作:

  • 安装Windows 10 SDK并将ucrt DDL目录添加到系统路径(C:\ Program Files \ Windows Kits \ 10 \ Redist \ ucrt或C:\ Program Files文件(x86)\ Windows Kits \ 10 \ Redist \ ucrt \ dll \ x64取决于您的系统)建设之前

  • 使用Python 3.4构建而不是3.5+