【问题标题】:Location of the added files after the executable file is generated by pyinstaller buildpyinstaller build生成可执行文件后添加文件的位置
【发布时间】:2019-05-21 10:52:36
【问题描述】:

我使用 pyinstaller 为我的 python 应用程序构建了一个可执行文件。我使用 --add-data 命令添加了两个文件夹(数据和音频样本)。可执行文件正在运行。但是我在哪里可以找到我添加的两个数据文件夹。它们不是和可执行文件一起放入 dist 文件夹吗?

【问题讨论】:

    标签: python python-3.x pyinstaller


    【解决方案1】:

    当您将数据添加到 PyInstaller 时,它会将您的数据带入并以temp 文件夹中的one-file 模式提取它(例如,在 Windows 上,它将类似于 C:\Users\<User>\Appdata\local\temp\_MEI60482\),因此您需要更改代码以打开您从该目录中的文件。一个好的做法是在代码中使用此函数来检索数据。运行可执行文件时,sys._MEIPASS 将等于 PyInstaller 临时文件夹。

    def resource_path(relative_path):
        if hasattr(sys, '_MEIPASS'):
            return os.path.join(sys._MEIPASS, relative_path)
        return os.path.join(os.path.abspath("."), relative_path)
    

    然后您可以将它与source = resource_path("audio.zip") 之类的东西一起使用。

    【讨论】:

    • 这个 temp 文件夹是真正的临时文件夹吗? (可执行文件运行完成后是否会被销毁)?
    • 我的意思是如果我将持久性数据保存到我的两个文件夹之一中的一个文件中,我可以在每次运行可执行文件时检索这些数据吗?
    • 这个文件夹是一个临时文件夹,这意味着如果你的应用程序正常退出,Pyinstaller 会删除它。如果您的应用程序因未捕获的异常而崩溃,则不会删除该文件夹,因此这是不可取的,您需要自己处理异常。您可以自己创建一个临时文件夹并将数据放入其中,标准程序通常使用appdata/roaming 作为其数据文件。那你要不要删除就自己动手了。
    猜你喜欢
    • 2018-01-19
    • 2021-07-27
    • 2019-12-19
    • 2018-05-01
    • 2021-06-22
    • 2022-01-04
    • 2014-01-04
    • 1970-01-01
    • 2021-07-12
    相关资源
    最近更新 更多