python 使用数据库配置文件时,打包成exe后,找不到配置文件 报错 【Python configparser No section: 'dbMysql'】

原代码

    def __init__(self, config_filename="dbMysqlConfig.cnf"):
        file_path = os.path.join(os.path.dirname(__file__), config_filename)
        self.cf = configparser.ConfigParser()
        self.cf.read(file_path)

执行结果

image

修改后

    def __init__(self, config_filename="dbUntils\\dbMysqlConfig.cnf"):
        file_path = os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])), config_filename)
        self.cf = configparser.ConfigParser()
        self.cf.read(file_path)

image
根本原因时找配置文件的相对路径不准确,实际这里用__file__取代了文件路径,再拼接相对路径,得到配置文件的绝对路径
在获取文件的地址时,之前采用:
os.path.dirname(os.path.abspath(file))来获取路径不同pycharm和直接点击运行py文件,(pycharm和直接点击运行py这个路径均为脚本的所在路径),获取的目录是c盘的一个临时目录。

解决:

需要获取到执行exe的路径:
os.path.dirname(os.path.realpath(sys.argv[0]))sys.argv[0]表示程序自身,realpath方法可以获取绝对路径

修改为windows的相对路径,并用os.path.realpath(sys.argv[0])代替__file__

posted @ 2022-05-06 23:51  darling331  阅读(170)  评论(0编辑  收藏  举报