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)
执行结果
修改后
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)
根本原因时找配置文件的相对路径不准确,实际这里用__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__
惜秦皇汉武,略输文采;唐宗宋祖,稍逊风骚。
一代天骄,成吉思汗,只识弯弓射大雕。
俱往矣,数风流人物,还看今朝