猿问

在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]时,也会发生相同的行为。


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


拉丁的传说
浏览 1685回答 3
3回答

牧羊人nacy

我找到了解决方案。您需要检查应用程序是作为脚本还是作为冻结的exe运行:import osimport sysconfig_name = 'myapp.cfg'# determine if application is a script file or frozen exeif 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)

千万里不及你

我把代码缩短了一点。import os, sysif 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
随时随地看视频慕课网APP

相关分类

Python
我要回答