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

前端 未结 3 2357
挽巷
挽巷 2021-02-20 08:41

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

相关标签:
3条回答
  • 2021-02-20 09:20

    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.

    0 讨论(0)
  • 2021-02-20 09:32

    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(...)

    0 讨论(0)
  • 2021-02-20 09:35

    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

    0 讨论(0)
提交回复
热议问题