如何在从IDE、PyInstaller运行时以及使用设置.py

2024-06-28 19:35:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据文件,需要在程序执行时加载。我正在使用以下函数访问我的数据文件:-你知道吗

def resource_path(relativePath):
    try:
        # PyInstaller stores data files in a tmp folder refered to as _MEIPASS
        basePath = sys._MEIPASS
    except Exception:
        try:
            if os.path.exists(os.path.join(os.path.dirname(__file__)), relativePath):
                basePath = os.path.join(os.path.dirname(__file__), "multibootusb")
            elif os.path.exists(os.path.join(sys.prefix, "multibootusb"), relativePath):
                print os.path.join(sys.prefix, "multibootusb")
        except Exception:
           basePath = '.'

    path = os.path.join(basePath, relativePath)

    if not os.path.exists(path):
        return None

    return path

当从IDE运行时,以及使用pyinstaller作为可执行文件分发之后,这种方法工作得非常好。但是,当我的应用程序使用设置.py. 下面是我用来分发数据文件usinf的示例代码设置.py:-

data_files = [("/usr/share/applications",["data/multibootusb.desktop"]),
                  ('/usr/share/pixmaps',["data/multibootusb.png"]),
                  (os.path.join(sys.prefix,"multibootusb", "tools"),["tools/checking.gif"])])

我不得不使用sys.prefix,因为不同发行版的路径不同。你知道吗


Tags: pathdataprefixos数据文件existssysfiles