python工程打包成exe可执行文件时相关路径的处理

背景

使用Pyinstaller将python工程打包的exe可执行的文件,作用及用途不再赘述,这里只记录过程打包过程中相关文件路径的处理。主要有两点,日志文件路径及代码中涉及的文件路径。

问题

1、代码中将日志文件设置在工程文件下,打包exe文件之后运行,生成的日志文件无法查看
2、代码中相关资源文件使用的相对路径,打包exe文件后,资源文件无法加载

解决方案

1、日志文件路径

解决思路:

运行exe时,释放exe文件路径,将日志文件生成在exe文件同级目录下,即让exe与日志文件在同一个文件下,方便查看日志

新增代码:

import os
import sys
​
def get_log_dir():
    if getattr(sys, 'frozen', False):
        exe_path = sys.executable
        log_dir = os.path.dirname(exe_path)
    else:
        log_dir = '本地路径'
    return log_dir
​
log_dir = get_log_dir()
print(log_dir)

用此进行判断,如果是运行exe文件,则获取exe文件的父级路径作为日志文件路径。

2、资源文件路径

解决思路:

PyInstaller打包后的程序会将资源解压到一个系统的临时目录,需要在Python程序中动态获取这个临时目录的路径,然后使用这个路径来加载资源文件。此外,再执行打包命令时,使用--add-data参数。

新增代码

import os
import sys
​
def resource_path(relative_path):
    if getattr(sys, 'frozen', False):
        return os.path.join(sys._MEIPASS, relative_path)
    return os.path.join(os.path.abspath("."), relative_path)
​
folder_path = resource_path('your_folder')

通过上面代码,判断如果是运行exe文件,动态获取资源文件路径。最终在使用资源文件路径的地方,调用该函数即可。

3、最终的打包命令

使用命令

pyinstaller -F --add-data "path:path" xx.py

其中 path 为代码中资源文件所在的文件夹路径

结语

至此,路径相关问题解决,后续如遇其他问题,再进行探索

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值