0

我正在尝试将我制作的一个 sciter 项目打包在一起。在 sciter 中,它使用 .htm 和 .css 文件。所以我想将它包含在我的 .exe 中,而不必单独包含它们。以下是我在 Python 代码中使用 HTML 文件的方式:

    # create window
    frame = Frame()

    # load file
    frame.load_file("index.htm")

    # install additional handler
    ev2 = RootEventHandler(frame.get_root(), frame)

    frame.run_app()

以下是我使用 PyLauncher 创建 exe 的方法: pyinstaller --add-binary "index.htm;index.css" launcher.py --onefile

注意:我在 Windows 上运行它。

当我运行我的启动器时,它说:

sciter.error.SciterError: Unable to load file file://C:/Users/user/launcher/dist/index.htm
[14684] Failed to execute script launcher

如果我放置 index.htm 文件和 index.css 文件,它可以正常工作。很明显,它期望这些文件包含在目录中。

4

3 回答 3

0

有多种方法:

  1. 打包时添加单个文件
  2. 将所有文件放在一个文件夹中,并在打包时添加

如果您不知道如何执行上述步骤,则只需使用 GUI 工具

使用这个小型网络应用程序,非常方便

于 2020-08-02T13:30:13.997 回答
0

您需要明确告诉 pyinstaller 非 python 文件要包含并嵌入到您的 exe 中。根据 pyinstaller 文档,您需要使用 --add-data <src;dest> (我认为 Syed H 试图回答)

以下命令会将这些非 python 嵌入到您的捆绑应用程序中

pyinstaller --add-data="index.htm;." --add-data="index.css;." --add-data="icon.ico;." --onefile launcher.py

注意:可以将数据(非 python)嵌入到 exe 中。正如我每天做的那样。如果您仍然看到错误,也许您可​​能希望在您的问题中包含 .spec 文件的内容以获得更好的洞察力。

于 2020-08-02T13:13:27.217 回答
0

数据/资源文件不能简单地合并到可执行文件中,因为它们不被视为代码,而是需要作为主程序代码中的数据/媒体/资源。但是,您可以做的是修改您的.spec文件,以便在您运行 pyinstaller 和规范文件时自动将这些文件包含在您的目录中。该datas字段包含需要包含在分发目录中的文件/资源​​的列表。

datas=[
                 ('index.htm', '.'),
                 ('index.css', '.')
             ],

这告诉 pyinstaller 将文件放置在可执行文件index.htmindex.css根文件夹中。

于 2020-07-28T02:57:52.427 回答