Pyinstaller distributing opencv from Windows 10 to Windows <10, missing ucrt dlls api-ms-win-crt

Viewed 5507

I have a Python 3.5 64 bit program (required by tensorflow for Windows) that uses OpenCV. I am distributing it with pyinstaller.

I built my program with Windows 10

/c/Python35/Scripts/pyinstaller -c DeepMeerkat.spec

On my computer, the .exe builds and runs perfectly. On any other non-Windows 10 machine

On

import cv2

Returns

ImportError: DLL load failed: The specified module could not be found.

I can see a huge amount of discussion on this on pyInstaller thread, but I can't quite tell how to put it into practice. Dependency walker says I'm missing a number of DLLs

api-ms-win-crt-**.dll

Okay, from the pyInstaller threads, I know that these DLLs exist

C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs

Under multiple subfolders base on architecture.

I tried adding to my .spec file

pathex=["C:/Program Files (x86)/Windows Kits/10/Redist/ucrt/DLLs/"],

Or for my particular architecture

pathex=["C:/Program Files (x86)/Windows Kits/10/Redist/ucrt/DLLs/arm"],

Which is what I thought was being suggested here

"Install the Windows Software Development Kit (SDK) for Windows 10 and expand the .spec-file to include the required DLLs, see “Distributing Software that uses the Universal CRT“ in the above-mentioned link, number 6."

That did not have any effect. I am getting hundreds of errors like

121472 WARNING: lib not found: api-ms-win-crt-runtime-l1-1-0.dll dependency of c:\python35\DLLs\_ssl.pyd

But I can see that DLL here

C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\arm

enter image description here

So then I literally copied posthoc the entire folder

cp -r "C:/Program Files (x86)/Windows Kits/10/Redist/ucrt/DLLs/" dist/Lib/

But it's not clear how to connect these to the .exe. Clearly, letting pyInstaller know beforehand is preferable.

I also tried

/c/Python35/Scripts/pyinstaller --path "C:/Program Files (x86)/Windows Kits/10/Redist/ucrt/DLLs/arm" -c DeepMeerkat.spec

And it still did not find them

I've also tried adding that folder to PATH. Any ideas?

3 Answers
Related