Pyinstaller打包单文件提示文件资源不存在
   1

Pyinstaller打包单文件,运行后程序后,提示文件资源不存在 报错 No such file or directory 的解决方法。

问题的原因主要有两个

  1. 是否将图片资源打包到单文件了
  2. 读取图片资源路径是否正确

解决第一个问题,打包时,使用 –add-data “src;dest” 参数,建议将所有的资源文件放到一个文件夹下,这样打包的时候,只需要添加一个–add-data,例如都放在static下,使用以下打包命令,就能将资源文件也打包进去了.

1
pyinstaller -Fw app.py --add-data="static;static"

只做了上面这步还是不行,打包出来的还是会报错,提示找不到资源。这是因为Pyinstaller将python程序打包成单个文件后,运行时,会将资源文件解压到一个临时文件夹。如果你读取图片资源使用的是相对位置,就会报错,需要从解压的临时文件夹中读取相关资源文件。这里可以通过以下代码解决。

1
2
3
# 解决打包后图片找不到的问题
def new_path(file_path):
    return path.abspath(path.join(path.dirname(__file__), file_path))

在读取文件时,读取文件时调用以上方法,传入文件的相对路径,这样打包后运行就没有问题了

1
2
3
4
# 原来的
open(file="static/file.txt")
# 替换成
open(file=new_path("static/file.txt"))
站长微信
请备注来意
二维码