使用Pyinstaller导出Python多个文件夹
我做了一个应用程序,结构如下:
这个应用程序可以让你输入数据,然后把这些数据添加到一个数据库里(数据库文件在数据库文件夹中的.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')