python打包exe后如何获取自身的执行路径

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python打包exe后如何获取自身的执行路径相关的知识,希望对你有一定的参考价值。

参考技术A 前天我遇到一个小坑,就是,我百度了一下后,使用sys模块的方法sys.path[0]去获取执行路径打包成exe和py文件执行那是两种结果,打包exe后会出现奇怪的路径,所以解决方法是这样子的:

获取本exe执行路径名字应该使用os模块和sys模块去获取

os.path.dirname(sys.executable)

像这样子,就能获取执行的路径了。

如果觉得我的文章对您有帮助,记得帮我点赞加收藏哦,谢谢各位哥哥姐姐们

python打包后获取exe路径

在写python程序中,有可能需要获取当前运行脚本的路径。打包成exe的脚本和直接运行地脚本在获取路径上稍微有点不同。

import os
import sys

config_name = \'myapp.cfg\'

# determine if application is a script file or frozen exe
if getattr(sys, \'frozen\', False):
    application_path = os.path.dirname(sys.executable)
elif __file__:
    application_path = os.path.dirname(__file__)

config_path = os.path.join(application_path, config_name)

sys.executable的作用是给出 python可执行文件的绝对路径。如果是Python脚本生成exe文件,则打印的是该exe文件的绝对路径。如果是脚本运行的话,返回的是python解析python.exe脚本的绝对路径。

关于getattr(sys, \'frozen\', False):
       程序需要知道当前是在PyInstaller打包后的环境运行还是在本地环境运行,运行PyInstaller的打包后的程序__PyInstaller的文档里有描写到,当程序是属于PyInstaller打包后的,它会在sys模块中添加\'frozen\'属性,通过简单的代码可以知道当前运行环境:
        当我们是本地测试时候,__file__属性就能满足要求,当使用PyInstaller打包程序选择的是单文件夹打包,PyInstaller会将文件夹的路径信息存储在sys.MEIPASS中。当使用的是单文件打包的方式,sys.MEIPASS

以上是关于python打包exe后如何获取自身的执行路径的主要内容,如果未能解决你的问题,请参考以下文章

python3.x的程序如何打包成exe可执行文件

python打包成 exe后程序无法运行?

Python如何打包EXE可执行文件

如何将python程序打包为exe

windows下如何将Python文件打包成.exe可执行文件

LABVIEW程序打包生成exe执行文件时,参数路径变了