pyinstaaler 打包时 如何把代码路径上的文件一并打包

问题遇到的现象和发生背景

python 用 pyinstaller 打包时 路径文件 不会被打进去 得手动粘贴过去 这个得如何解决?

用代码块功能插入代码,请勿粘贴截图

import os
import time

print("--欢迎光临 无敌网站--")

BASE_PATH = os.path.dirname(os.path.abspath(file))
OBJECT_PATH = os.path.join(BASE_PATH, "data.txt") # 就是这个文件 不会被打包进去 这个文件就在项目目录下

with open(os.path.join(OBJECT_PATH, mode="rt", encoding="utf-8") as f:
data = f.readline()

print(data)

运行结果及报错内容

终端运行 pyinstaller -D xxxx.py

我想要达到的结果

终端运行 打包以后 我希望 OBJECT_PATH 这个路径的文件 也一并打包进去

img

pyinstaller 命令行使用:https://pyinstaller.org/en/stable/usage.html#

pyinstaller -D --add-data="data.txt;." xxxx.py

使用-F可以将所有打包为一个exe文件

pyinstaller -F --add-data="data.txt;." xxxx.py

方法1.执行打包过后,自动生成.spec文件,用记事本打开,修改datas,把你需要一起打包的路径填写进去,重新执行pyinstaller,参数填写.spec文件
方法2.打包之后手动将要拷贝的文件夹拷贝进去

一般不用把文件打包进exe。资源性质的文件不必打包,你看很多电脑软件(QQ、微信),他们的安装目录里面都有很多资源文件,如图片、文本。
如果你真的要打包,首先需要满足一个条件,文本文件不能和你的代码程序有读写交互,因为如果没有了文本文件,而代码中有读写交互就会导致程序出错。
第二个,也就是你想把这个文本数据加密,别人看不到,但是你的程序能看到,那可以直接把文本的内容拷贝到py文件中,相当于一段死数据。

【pyinstaaler 打包时 如何把代码路径上的文件一并打包】
提供参考博文,博文内容详细讲解了pyinstaaler打包的4种方式,期望对你有所帮助,参考链接:https://www.cnblogs.com/rmticocean/articles/15892066.html

另,打包时需注意:
只能指定一个要打包的模块,也就是启动模块
发布后,可执行文件执行路径不能有中文(最好也不要有空格)
启动执行的文件中不要有下面这种判断,否则可执行文件执行会没有任何效果

打包之后手动将要拷贝的文件夹拷贝进

文件写成绝对路径就行了吧

代码需要改一下,我给你看一下,我前段时间开发的。你把“AcroRdrDC_zh_CN.exe”,这个换成你要的就行了。看图片:
1.需要改的代码部分:

img

  1. 编译部分:
    pyinstaller -F --add-data="AcroRdrDC_zh_CN.exe;files" pdf-auto.py

3.我的目录结构:

img

希望对你有所帮助

可以在用另外的工具打包进去,而且安装时可以按照步骤下一步