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

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


If you would have provided your spec file I'd could see what's going on. From here its likely your not including files.

There is two methods to go from here:

  1. Create "one" single file that includes all dll's, pyd files and more... a large exe-file as result.
  2. The other way is to have it as file + folder filled with dll files, etc... you get a small exe-file.

Check add binary (incl. dll) files here the pyinstaller documentation about including files manually.

Check add data files here the pyinstaller documentation about including files manually.

An example spec-file that includes dll files from your dll folder.

block_cipher = None a = Analysis(['minimal.py'], pathex = ['/Developer/PItests/minimal'], binaries = [ ( 'C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs', '.' ) ], datas = [ ('helpmod/help_data.txt', 'helpmod' ) ], hiddenimports = [], hookspath = None, runtime_hooks = None, excludes = None, cipher = block_cipher) pyz = PYZ(a.pure, a.zipped_data, cipher = block_cipher) exe = EXE(pyz,... ) coll = COLLECT(...)


I need to do this myself but haven't yet. I'll try to post my full solution when I do. In the mean time...

I think you may have to explicitly request they be included instead of just expanding the search path.

https://pythonhosted.org/PyInstaller/spec-files.html#adding-binary-files

Probably using the Tree class they mention to collect all the files for you.

https://pythonhosted.org/PyInstaller/advanced-topics.html#the-tree-class


I've seen PyInstaller and Py2exe fail to pickup dlls countless times. Personally, I wrap my uses of them in batch or bash for a number of reasons to extend what they do. Logically, I see an argument for wrapping them in py scripts themselves...

Anyway, it may be easier to just copy the dependencies into your installation package through a wrapper script rather then fight with this.

Typically, you'll get a dll missing error thrown at you when try to run something it's missing. Add each one manually to the directory, noting what you needed to include yourself. Then script that.