Python cx_freeze 为构建中包含的文件创建目录

Python cx_freeze Create dirs for included files in build

是否可以在 cx_freeze 构建输出上创建目录(文件夹),因为我包含(include_files)许多数据库文件,我希望这些文件位于特定文件夹等中。我可以采取他们很容易从我的文件夹中.....

"include_files": ["databases/nations.txt","databases/newafrica.txt",
                    "databases/neweeurope.txt","databases/neweurope.txt","databases/newmeast.txt","graph.py",
                    "databases/newnamerica.txt","databases/plates.txt",
                    "databases/ACN/rigidA.txt","databases/ACN/rigidB.txt",
                    "databases/ACN/rigidC.txt","databases/ACN/rigidD.txt","databases/ACN/flexibleA.txt",
                    "databases/ACN/flexibleB.txt","databases/ACN/flexibleC.txt",
                    "databases/ACN/flexibleD.txt","alternates.xlsx",

但这只会将它们全部复制到 exe 构建目录中,而且一团糟。 提前致谢。

您可以通过多种方式解决问题。

方法 1 - 使用 include_files

与其询问每个单独的文本文件,不如将文件名放在安装脚本中,而忽略单独的文本文件。在你的情况下它会是这样的:

"include_files": ["databases"]

这会将包含所有内容的整个 databases 文件夹复制到您的构建文件夹中。

绝对文件路径也适用。

如果您要使用安装程序功能 (bdist_msi),请使用此方法。

您只能使用 "include_files": ["databases/ACN"]

复制子文件夹

方法 2 - 手动

好吧,它不是 Python 风格的,但一种方法是手动将它复制到构建文件夹中。

方法 3 - 使用 os 模块

与方法二非常相似,它将文件夹复制到您的构建文件夹中,但它不会手动处理它,而是使用 Python。您还可以选择使用其他 Python 功能。

希望对您有所帮助。