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

发布于 2021-01-29 17:32:32

我有一个驻留在单个.py文件中的应用程序。我已经能够让pyInstaller将其成功捆绑到Windows的EXE中。问题是,应用程序需要一个.cfg文件,该文件始终直接位于同一目录中的应用程序旁边。

通常,我使用以下代码构建路径:

import os
config_name = 'myapp.cfg'
config_path = os.path.join(sys.path[0], config_name)

但是,当从pyInstaller生成的EXE调用sys.path时,它似乎为空。当您运行python交互式命令行并尝试获取sys.path
[0]时,也会发生相同的行为。

有没有更具体的方法来获取当前正在运行的应用程序的路径,以便我可以找到与其相关的文件?

关注者
0
被浏览
85
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看