auto-py-to-exe 遇到的奇葩问题,主程序调用了一个外部文件为.json格式的配置文件,打包后一起无法正确找到该文件,突然想放在一个文件夹下面试试,加了一个文件夹,把json放入文件夹,不和主程序同在根目录下,就成功了,估计add-data命令默认不能和主程序放在同一层级上面,是不是这样,如果是,请小伙伴们避坑啊~?
是的,auto-py-to-exe 打包程序使用 PyInstaller 库进行打包,而 PyInstaller 默认会将主程序及其依赖的文件打包为一个单独的可执行文件,这个文件需要包含所有的依赖文件才能正确运行。
在打包过程中,可以使用 --add-data 参数将需要的外部文件(如你的 .json 配置文件)添加到可执行文件中。如果你的配置文件和主程序不在同一个目录下,你可以将它们放在同一个文件夹中,然后使用 --add-data 参数指定这个文件夹的路径和需要包含的文件,这样就能够正确地将配置文件打包到可执行文件中了。
例如,假设你的主程序名为 my_program.py,配置文件名为 config.json,你将它们都放在一个名为 my_project 的文件夹中,那么你可以使用以下命令将它们打包为一个可执行文件:
auto-py-to-exe --onefile --add-data "my_project/config.json;my_project" my_program.py
其中 --add-data 参数指定了需要添加的文件和文件夹路径,语法为 "源文件路径;目标路径",其中目标路径是相对于可执行文件的路径。在本例中,my_project/config.json 是源文件路径,my_project 是目标路径,它表示将 config.json 文件添加到打包后的可执行文件的 my_project 文件夹中。
注意,在打包过程中,auto-py-to-exe 会将源文件复制到打包文件夹中进行打包,所以在使用 --add-data 参数指定文件路径时,应该使用源文件的相对路径而不是绝对路径。
以下答案引用自GPT-3大模型,请合理使用:
实现,谢谢。
是的,add-data 命令默认不能和主程序放在同一层级上面。可以通过指定文件夹的路径来操作:
# 使用auto-py-to-exe打包
to_exe = Executable(script="hello_world.py ",
base="Win32GUI",
target_name="hello_world.exe")
# 将文件加入到打包文件中
# 注意路径要正确
data_files = [("src/config",["src/config/config.json"])]
# 打包过程
setup(name="Hello World",
version="0.1",
description="First program ever written in Python",
executables=[to_exe],
data_files=data_files)
如果我的回答解决了您的问题,请采纳我的回答