是否存在与Pyinstaller捆绑在一起的二进制文件(--onefile),但在运行时仍找不到?

时间:2018-07-18 10:07:14

标签: python-3.x pyinstaller

美好的一天,

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

enter image description here

enter image description here

我也感谢this thread在此文件夹中添加了数据(图标和自述文件),程序查找它们没有问题,因此问题仅在于二进制文件,而显然不是数据。在--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

1 个答案:

答案 0 :(得分:0)

一种可能的解决方法(不是修补程序),是在计算机上安装 Visual Studio 2015的Visual C ++ Redistributable 。希望能对某人有所帮助。 Credit

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