在pyInstaller生成的Python EXE中确定应用程序路径
我有一个驻留在单个.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]时,也会发生相同的行为。
有没有更具体的方法来获取当前正在运行的应用程序的路径,以便我可以找到与其相关的文件?
-
我找到了解决方案。您需要检查应用程序是作为脚本还是作为冻结的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)