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

如何在pyinstaller中包含文件?

赫连俊雄
2023-03-14

我还使用tkinter用Python3.7编写了一个程序。因为我使用的是外部图片,所以当我将所有内容编译成一个exe时,我需要包含它们。我尝试过执行——添加数据“bg.png;文件”,但仍然出现以下错误:

_特金特。Tcl错误:无法打开“files/bg.png”:没有这样的文件或目录

代码如下:

image = PhotoImage(file="files/bg.png")
w = image.width()
h = image.height()
x = 316
y = 246
mainGui.geometry("%dx%d+%d+%d" % (w, h, x, y))
panel = Label(mainGui, image=image)
panel.pack(side='top', fill='both', expand='yes')

我做错了什么?我也尝试过添加二进制文件,将该文件添加到我的spec文件中。我真的搞不懂!

共有1个答案

黄君博
2023-03-14

很抱歉,我认为只有-F/--one文件会发生这种行为,但任何与pyinstaller绑定的文件都需要这样的更改。

您需要像下面的回答中所解释的那样更改代码:

import sys

if getattr(sys, 'frozen', False):
    image = PhotoImage(file=os.path.join(sys._MEIPASS, "files/bg.png"))
else:
    image = PhotoImage(file="files/bg.png")

然后将其与pyinstaller捆绑在一起,如下所示:

pyinstaller --clean -y -n "output_name" --add-data="files\bg.png;files" script.py
 类似资料:
  • 问题内容: 我正在使用pyinstaller创建我的python脚本的可执行文件。 在脚本中,我使用了以下导入: 问题是,运行时,它将导致包括Firefox而不是Chrome。在结果文件夹c:… \ dist \ myscript \ selenium \ webdriver中,有一个firefox文件夹,因此它只是跳过了chromedriver,这对我来说是个严重的问题,因为脚本需要与Chrom

  • 我用python编写了代码,打开了一个模板excel文件。每天午夜,它都会将模板复制到一个新的excel文件中,代码会在其中记录当天的数据。我的目标是使用pyinstaller创建一个包含我的代码和模板excel文件的可执行文件。 基本上,我希望能够打开模板excel文件,不管计算机是否包含该文件,通过捆绑excel文件到从pyInster获得的exe文件: 现在我打开excel文件,如下所示:

  • 如何强制pyinstaller使用特定的。打包为exe时的jar文件? 我正在尝试生成一个使用tabla-py-lib的可执行文件。这个库需要一个jar文件tabla-1.0.1-jar-with-dependencies。jar,我的文件中有。py文件夹。这些是myfile中的一些修改。规格: 然而,错误仍然存在。当我从命令行运行我的代码时,函数read_pdf(),来自tabula-py,它使

  • 问题内容: Pyinstaller的所有文档都讨论了如何包含单个文件。是否可以包含目录,还是应该编写一个函数来遍历我的包含目录来创建包含数组? 问题答案: 令我惊讶的是,没有人使用以下方式提及官方支持的选项: http://codingdict.com/questions/165642 https://pythonhosted.org/PyInstaller/advanced-topics.htm

  • 问题内容: 我正在使用LiteIDE for Go。我的Go文件位于此处: 当我使用以下文件添加文件时: 导入“ ../Helper” 我收到此错误: 无法加载软件包:/Users/username/go/src/src/projectA/main.go:4:8:非本地软件包中的本地导入“ ../Helper” 有什么想法我做错了吗? 问题答案: 您通过导入路径导入软件包。对于位于中的packag

  • 本文向大家介绍如何在HTML文档中包含Modernizr?,包括了如何在HTML文档中包含Modernizr?的使用技巧和注意事项,需要的朋友参考一下 Modernizr提供了一种检测任何新功能的简便方法,因此您可以采取相应的措施。例如,如果浏览器不支持视频功能,那么您想显示一个简单的页面。 您可以根据功能的可用性创建CSS规则,如果浏览器不支持新功能,这些规则将自动应用于网页。 您可以从Mode