代码之家  ›  专栏  ›  技术社区  ›  Guimoute

与pyinstaller(--onefile)绑定的二进制文件存在,但在运行时仍找不到?

  •  0
  • Guimoute  · 技术社区  · 7 年前

    很好的一天,

    当我试图用pyinstaller创建一个独立的(--onefile)exe时,遇到了一个奇怪的错误。执行过程找不到两个.dll,即使它们已正确打包到exe中并正确放置到 temp/_MEIPASSxxxxx 文件夹在运行时,如下面的屏幕截图所示。这不会在开发计算机上发生。

    enter image description here

    . enter image description here

    由于 this thread 程序在查找它们方面没有问题,所以问题只在于二进制文件,而不是数据。而且,在--onedir模式下也没有问题,只有--onefile。

    这是我的规格:

    # -*- mode: python -*-
    
    block_cipher = None
    import sys
    sys.setrecursionlimit(5000)
    
    added_binaries = [
                     ("python36.dll", "."),
                     ("api-ms-win-crt-runtime-l1-1-0.dll", ".")
                     ] 
    
    added_data = [
                 ("PilotageIcon.png", "."),
                 ("PilotageREADME.pdf", ".")
                 ]
    
    a = Analysis(['Pilotage.py'],
                 pathex=['C:\\Users\\local-adm\\Desktop\\Lucas\\Keithley\\2018 07 18'],
                 binaries=added_binaries,
                 datas=added_data,
                 hiddenimports=[],
                 hookspath=[],
                 runtime_hooks=[],
                 excludes=[],
                 win_no_prefer_redirects=False,
                 win_private_assemblies=False,
                 cipher=block_cipher)
    pyz = PYZ(a.pure, a.zipped_data,
                 cipher=block_cipher)
    exe = EXE(pyz,
              a.scripts,
              a.binaries,
              a.zipfiles,
              a.datas,
              name='Pilotage',
              debug=True,
              strip=False,
              upx=True,
              runtime_tmpdir=None,
              console=True,
              icon='PilotageIcon.ico'
              )
    

    我在这里读了很多其他的文章,但它们不符合我的情况 很明显文件在那里 所以我不明白为什么会出错。提前谢谢。

    python版本:3.6.3

    PyInstaller版本:3.3.1

    1 回复  |  直到 7 年前
        1
  •  0
  •   Guimoute    7 年前

    可能的解决方案, 不是解决办法 ,将要安装 VisualC++对VisualStudio 2015的可重新分发 在机器上。希望这能帮助别人。 Credit .

    它并不完全理想,因为它为最终用户增加了更多的步骤。