【问题标题】:Pyinstaller for arm 32bit compilation用于 arm 32 位编译的 Pyinstaller
【发布时间】:2019-06-21 18:33:03
【问题描述】:

我使用 Ubuntu 作为主机系统,编译为 32 位手动选择引导加载程序,相对于创建捆绑 Python 文件。并复制到我的手臂目标板上。

我面临的错误是无法执行二进制文件 在我的手臂板上。

我无法使用 --add-data 将 .my .csv 文件与可执行文件捆绑在一起。运行可执行文件时,它会在当前文件夹中搜索我的 CSV 文件,将错误显示为文件未找到错误。 如何使用我的可执行文件添加多个文件(CSV 和 INI)文件。

如何解决这个问题。

问候 拉贾拉克什米

【问题讨论】:

  • 您能发布完整的错误日志和引导加载程序吗?另外,你的手臂板是什么?模拟您的 arm board 操作系统并在其中构建您的应用程序比交叉编译更容易。
  • 嗨,我可以使用 debian rootfs 进行编译。感谢您的支持。但我无法使用 --add-data 将 .my .csv 文件与可执行文件捆绑在一起。在运行可执行文件时,它在当前文件夹中搜索我的 csv 文件..它显示错误为文件未找到错误错误 2..请解决此问题。如何使用我的可执行文件添加多个 csv 和 ini 文件..
  • 您的问题不同,我编辑了问题,现在回答它。希望对您有所帮助。

标签: pyinstaller


【解决方案1】:

要添加您需要的数据文件首先,为您的数据文件提供--add-data 标志。然后因为您的数据将被提取到临时目录中,您需要为您的应用程序设置其地址。在下面的示例中,我正在处理来自 resource_path 函数的所有 CSV 文件,该函数将返回每个文件的相对路径。

我假设您将所有文件放在应用旁边的data 目录中。

app.py:

import os
import sys


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)


if __name__ == "__main__":
    csv_files = ["data/a.csv", "data/b.csv", "data/c.csv"]

    print("Reading CSV files from data directory")
    for csv_file in csv_files:
        with open(resource_path(csv_file), "r") as f:
            print(csv_files, ":", f.read())
    print("Done!")

然后您可以使用以下命令生成可执行文件:

pyinstaller app.py -F --add-data "./data/*;data/"

【讨论】:

  • 从 Subprocess 调用另一个脚本无法与 pyinstaller 一起使用。没有显示此类文件或目录错误。如何解决此问题
  • 请将您的问题作为一个新问题提出,并提供更多详细信息。
猜你喜欢
  • 2021-05-06
  • 2020-12-26
  • 1970-01-01
  • 2020-02-21
  • 2017-06-09
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 2017-03-11
相关资源
最近更新 更多