我有一个驻留在单个.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)
千万里不及你
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
添加回答
举报
0/150
提交
取消