为了账号安全,请及时绑定邮箱和手机立即绑定

在pyInstaller生成的Python EXE中确定应用程序路径

在pyInstaller生成的Python EXE中确定应用程序路径

拉丁的传说 2019-10-25 11:11:38
我有一个驻留在单个.py文件中的应用程序。我已经能够让pyInstaller将其成功捆绑到Windows的EXE中。问题是,应用程序需要一个.cfg文件,该文件始终直接位于同一目录中的应用程序旁边。通常,我使用以下代码构建路径:import osconfig_name = 'myapp.cfg'config_path = os.path.join(sys.path[0], config_name)但是,当从pyInstaller生成的EXE调用sys.path时,它似乎为空。当您运行python交互式命令行并尝试获取sys.path [0]时,也会发生相同的行为。有没有更具体的方法来获取当前正在运行的应用程序的路径,以便我可以找到与其相关的文件?
查看完整描述

3 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

我找到了解决方案。您需要检查应用程序是作为脚本还是作为冻结的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)


查看完整回答
反对 回复 2019-10-25
?
千万里不及你

TA贡献1784条经验 获得超9个赞

我把代码缩短了一点。


import os, sys


if getattr(sys, 'frozen', False):

    application_path = os.path.dirname(sys.executable)

    os.chdir(application_path)


logging.debug('CWD: ' + os.getcwd())

但是,sys._MEIPASS指向错误的目录。我认为这也需要sys._MEIPASS+\app_name


查看完整回答
反对 回复 2019-10-25
  • 3 回答
  • 0 关注
  • 1657 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信