PyInstaller打包exe后无法获取自身所在目录的问题求助
PyInstaller打包exe后获取自身目录的解决方法
PyInstaller打包后的exe运行时,会把脚本解压到系统临时目录,所以原来通过__file__获取的路径会指向这个临时文件夹,而非exe实际所在目录。你可以通过以下方式修改代码,同时兼容py脚本和exe两种运行场景:
替换原路径获取代码为:
import os import sys def get_app_dir(): if getattr(sys, 'frozen', False): # 打包为exe时,获取exe所在目录 app_dir = os.path.dirname(os.path.abspath(sys.executable)) else: # 运行py脚本时,获取脚本所在目录 app_dir = os.path.dirname(os.path.abspath(__file__)) return app_dir
之后在需要获取目录的地方,直接调用get_app_dir()即可。
原理说明:
sys.frozen是PyInstaller打包后自动添加的属性,用于标记当前为打包后的运行环境sys.executable在打包后指向exe文件的完整路径,取其目录就是exe所在的文件夹
内容的提问来源于stack exchange,提问作者Arif Hamim
相关产品推荐
相关产品推荐

