Python打包成exe后在不同目錄執行閃退的原因是什么?如何解決?

python打包成exe后在不同目錄執行閃退問題分析與解決

當我們將python腳本打包成exe文件后,可能會遇到一個棘手的問題:在打包生成的目錄中執行exe文件正常,但在將其移動到其他目錄執行時,exe文件會閃退且不生成日志文件。這個問題到底是什么原因導致的呢?讓我們深入探討一下這個問題以及解決方案。

問題描述

代碼的主要功能是通過定時任務從源數據庫中提取數據,然后將其插入到目標數據庫中。代碼已經在pycharm中成功運行,并能正常打印日志。但是,當使用pyinstaller命令打包成exe文件后,雖然在打包生成的目錄中執行正常,但在將其復制到其他目錄執行時,exe文件會立即閃退,且不生成任何日志文件。

問題分析

經分析,問題可能出在日志配置上。當exe文件在其生成目錄中運行時,日志文件sync22.log可以正常寫入。但當exe文件被移動到其他目錄時,程序可能無法找到日志文件的路徑,從而導致程序在嘗試寫入日志時崩潰。

解決方案

為了解決這個問題,我們需要修改日志配置,使其能夠在任何目錄下運行exe文件時都能正確找到日志文件的路徑。我們可以通過獲取exe文件的當前目錄來動態設置日志文件的路徑。

以下是解決方案中的關鍵代碼:

立即學習Python免費學習筆記(深入)”;

import os import sys <h1>獲取exe所在目錄并設置日志路徑</h1><p>if getattr(sys, 'frozen', False):</p><h1>打包后的exe路徑</h1><pre class="brush:php;toolbar:false">exe_dir = os.path.dirname(sys.executable)

else:

腳本運行路徑

exe_dir = os.path.dirname(os.path.abspath(__file__))

os.makedirs(exe_dir, exist_ok=True) log_path = os.path.join(exe_dir, ‘sync22.log’)

日志配置

Logging.basicConfig( filename=log_path, level=logging.INFO, format=’%(asctime)s – %(levelname)s – %(message)s’ )

通過這段代碼,我們確保無論exe文件在哪個目錄下運行,都能正確找到并寫入日志文件,從而避免程序因找不到日志路徑而閃退的問題。

Python打包成exe后在不同目錄執行閃退的原因是什么?如何解決?

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享