首页 > 解决方案 > 存在带有 Pyinstaller (--onefile) 的捆绑二进制文件,但在运行时仍未找到?

问题描述

再会,

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

在此处输入图像描述

. 在此处输入图像描述

由于这个线程,我也在这个文件夹中添加了我的数据(图标和自述文件),并且程序在找到它们时没有问题,所以问题只是二进制文件而不是数据。在--onedir 模式下也完全没有问题,只有--onefile。

这是我的.spec:

# -*- 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

标签: python-3.xpyinstaller

解决方案


一种可能的解决方法,而不是修复方法,是在机器上安装Visual C++ Redistributable for Visual Studio 2015 。希望这可以帮助某人。信用

这并不完全理想,因为它为最终用户添加了更多要遵循的步骤。


推荐阅读