使用Pyinstaller导出Python多个文件夹

0 投票
1 回答
33 浏览
提问于 2025-04-14 18:21

我做了一个应用程序,结构如下:

这里输入图片描述

这个应用程序可以让你输入数据,然后把这些数据添加到一个数据库里(数据库文件在数据库文件夹中的.db文件),同时它还会生成一个Excel文件,并把这个文件导出到/excels/文件夹,使用的是在/plantilla/文件夹里的Excel模板。

我需要确保导出的应用程序能够访问这些导出的Excel文件和模板文件,还有数据库文件,因为它会放到一个本地网络文件夹里。

我尝试使用.spec文件导出,代码如下:

    added_files = [
    ( 'database/', 'data' ),
    ( 'excels/', 'data' ),
    ( 'formularios/', 'data'),
    ( 'imagenes/', 'data'),
    ( 'model/', 'data'),
    ( 'plantilla/', 'data'),
    ( 'theme/', 'data'),
    ( 'util/', 'data' )
]

问题是,当我去到/dist/文件夹时,结构是这样的:

这里输入图片描述

这里输入图片描述

当我打开.exe文件时,它会打开一个窗口,但很快就关闭了,不过我抓拍到了它的截图: 这里输入图片描述

这很奇怪,因为我在添加文件的命令中已经包含了这个文件夹……

谢谢!!

1 个回答

1

如果我理解得没错,你是想在你的应用程序中添加一些额外的数据目录或文件,这样在构建完成后你就可以访问它们。为了做到这一点,你可以更新规格文件,通过更新“datas”部分来添加额外的文件。像这样:

datas=[('current_file_path/filename.txt', '.')]

这里,第一个参数是当前数据所在的文件或文件夹的路径,第二个参数是你希望在构建完成后放置它们的位置。

构建完成后,你可以使用以下方式访问这些数据:

os.path.join(os.path.dirname(__file__), 'filename.txt')

因为我们将文件和文件夹放在新生成的exe目录相对的位置,所以在路径中需要使用 os.path.dirname(__file__) 来访问它。所以如果你把目标路径从 . 改为 data,你可以这样访问:

os.path.join(os.path.dirname(__file__), 'data', 'filename.txt')

撰写回答