当前位置: 首页 > 知识库问答 >
问题:

PyInster和--onefile:如何在exe文件中包含图像

酆出野
2023-03-14

我使用Pyinstaller创建了一个exe文件。

pyinstaller.exe --onefile --icon='Loco.ico program.py

在该程序中,我在绘图中包括一个图像,当我在其文件夹中单独运行该程序时,我得到以下结果:

IOError: [Errno 2] No such file or directory: 'Logo.png'

一种解决方案是将图像包含在exe文件夹中,如下面的链接所示:

pyinstaller不显示图像和图标

但是,再一次强调,一个文件的全部意义就是要有一个完整的文件,而不需要额外的图像。我想解决办法可能就在这个环节上,但我还不明白。

使用PyInstaller(--onefile)绑定数据文件

我的等级库文件如下所示:

# -*- mode: python -*-
a = Analysis(['AMOS_Visualizer.py'],
    pathex=['C:\\Users\\elu\\PycharmProjects\\Prosjektet\\Forsok splitting'],
    hiddenimports=[],
    hookspath=None,
    runtime_hooks=None)

pyz = PYZ(a.pure)
exe = EXE(pyz,
      a.scripts,
      a.binaries,
      a.zipfiles,
      a.datas,
      name='AMOS_Visualizer.exe',
      debug=False,
      strip=None,
      upx=True,
      console=True , icon='AMOS.ico')

共有3个答案

虞修平
2023-03-14

这是以下内容的一个变体:将数据文件与PyInstaller(--onefile)捆绑在一起,给出的答案更清晰。

分为两行:

  1. 您必须在“数据”中添加图像文件(在规范文件中或使用PyInstaller钩子脚本)
何乐
2023-03-14

如果使用Qt Designer,则可以创建资源文件并将所需的所有图像(包括Logo.png)添加到此资源。

要创建资源文件,可以按照使用QT Designer在GUI中插入图像中的步骤进行操作。

将图像插入资源文件后,指定徽标。png到窗口图标,保存QtDesigner界面并使用命令转换资源文件:pyrcc4-py3 resourcetest。qrc-o资源测试。py

最后,使用--onefile选项创建exe文件。无需编辑规范文件。

李甫
2023-03-14

编辑:

我相信我找到了解决问题的办法。

# -*- mode: python -*-
a = Analysis(['AMOS_Visualizer.py'],
         pathex=['C:\\Users\\elu\\PycharmProjects\\Prosjektet\\Forsok splitting'],
         hiddenimports=[],
         hookspath=None,
         runtime_hooks=None)

for d in a.datas:
    if 'pyconfig' in d[0]:
        a.datas.remove(d)
        break

a.datas += [('Logo.png','C:\\Users\\elu\\PycharmProjects\\Prosjektet\\Forsok splitting\\Logo.png', 'Data')]
pyz = PYZ(a.pure)
exe = EXE(pyz,
      a.scripts,
      a.binaries,
      a.zipfiles,
      a.datas,
      name='AMOS_Visualizer.exe',
      debug=False,
      strip=None,
      upx=True,
      console=True, icon='C:\\Users\\elu\\PycharmProjects\\Prosjektet\\Forsok splitting\\AMOS.ico')

并将以下内容添加到我的主要内容中。py脚本

def resource_path(relative_path):
    """ Get absolute path to resource, works for dev and for PyInstaller """
    try:
        # PyInstaller creates a temp folder and stores path in _MEIPASS
        base_path = sys._MEIPASS
    except Exception:
        base_path = os.path.abspath(".")

    return os.path.join(base_path, relative_path)

Logo = resource_path("Logo.png")
 类似资料:
  • 我正在Windows上使用Pyinstaller制作一个。我的项目的exe文件。 我想使用选项来获得一个干净的结果和一个易于分发的文件/程序。 我的程序使用用于存储配置选项的文件。此文件可由用户自定义。 使用选项Pyinstaller将所有声明的“数据文件”放入单个文件。 我见过这个请求,但它给出了在同一级别的并位于同一个目录中。 在某个时候,我想过在. spec文件中使用shutil.copy命

  • 尝试转换多个时。使用py2exe将文件复制到exe文件中我得到错误:回溯(最近一次调用上次):文件“ParentWindow.py”,第7行,in 提到的“FileAnalysers1”是包含. py脚本的python包。如何在exe中包含整个包?

  • 问题内容: 现在,我正在使用Pyinstaller。我有一个脚本,可以从img文件夹中获取图像。 我生成.exe的脚本是 问题是仅生成.exe文件,但整个文件夹/ img被忽略。 问题:为了自动获取.exe文件+ / img文件夹,我需要在上一行中添加哪种附加语法? 更新12/18/2013 我的意思是:执行pyinstaller.py脚本并包含所有参数后,我必须在/ dist文件夹中看到:.ex

  • 问题内容: 我是Django的新手,我正尝试通过一个正在开发的简单项目“ dubliners”和一个名为“ book”的应用程序来学习它。目录结构是这样的: 我有一个JPG文件,需要在每个网页的页眉中显示。我应该在哪里存储文件?我应该使用哪个路径来使用模板显示标签?我已经尝试过各种位置和路径,但到目前为止没有任何效果。 … 感谢您在下面发布答案。但是,我尝试了图像的相对路径和绝对路径,但仍然在网页

  • 我还使用tkinter用Python3.7编写了一个程序。因为我使用的是外部图片,所以当我将所有内容编译成一个exe时,我需要包含它们。我尝试过执行,但仍然出现以下错误: _特金特。Tcl错误:无法打开“files/bg.png”:没有这样的文件或目录 代码如下: 我做错了什么?我也尝试过添加二进制文件,将该文件添加到我的spec文件中。我真的搞不懂!

  • 我试图捆绑我的py脚本作为一个. exe使用PyInstaller 2.0。我可以捆绑脚本,但是在我的脚本中,我需要打开一个应该捆绑在exe中的文件(所以它是可移植的)。我做这个有困难... 在我的生活中。是的,我有 我使用PyInstaller 2.0,这在我的电脑上工作正常,但是如果我把exe转移到另一台电脑上,它就不能工作了...PyInstaller 2.0非常新,所以上面的文档很少,出版