如何获取PyInstaller单文件打包exe的实际路径而非临时_Meixxxx文件夹?
如何获取PyInstaller单文件exe的实际路径(而非临时文件夹)
问题背景
我近期在开发一个需要与其他文件交互的Python项目,已经将其打包为单文件exe。尝试获取该编译后exe的绝对路径时,网上的方法都指向了_Meixxxx临时文件夹,这个路径完全不便于人工交互。我试过os.getcwd()、os.path.dirname()等方法,都没能得到想要的结果,请问有没有办法获取exe的实际路径而非临时文件夹?
解决方案
感谢@johnashu的提示,使用os.path.dirname(os.path.realpath(__file__))可以正确获取到exe文件所在的实际路径。
这里额外解释下为什么这个方法有效:当PyInstaller打包单文件exe时,程序运行阶段会自动解压到系统临时目录,常规的路径方法会指向这个临时目录,但os.path.realpath()会解析出临时文件对应的原始exe路径,再结合os.path.dirname()就能拿到exe所在的文件夹路径了。
你可以直接在代码中使用这段逻辑:
import os # 获取当前exe的实际所在路径 actual_exe_dir = os.path.dirname(os.path.realpath(__file__)) print(f"Exe实际所在目录:{actual_exe_dir}")
这样就能得到方便和其他文件交互的真实路径啦。
内容的提问来源于stack exchange,提问作者Garam Lee




