从IDE,PyInstaller运行以及使用Setup.py分发后如何访问数据文件

时间:2014-04-19 11:18:29

标签: python setup.py

我有程序执行期间需要加载的数据文件。我使用以下函数来访问我的数据文件: -

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分发为可执行文件后,这非常正常。但是,使用setup.py安装我的应用程序时存在问题。这是我用于分发数据文件usinf setup.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,因为各种发行版的路径不同。

0 个答案:

没有答案