更改 Python cx_Freeze 项目中的文件夹结构

Change folder structure in Python cx_Freeze project

我制作了一个 Python 应用程序,我想构建 exe 文件以简化 Windows 用户之间的共享。我用过:

得到一个exe文件,但是最后的结构让我哭笑不得:

在我看来,这对用户来说不方便,我想将文件夹和 pyd 文件移动到单独的文件夹或存档中(这样会更好)。有人知道这样做吗?当前build.py

from cx_Freeze import setup, Executable

setup(
    name = 'myapp',
    version = '0.1',
    executables = [Executable(
        script='__main__.py',
        targetName='myapp.exe',
        icon='myapp.ico'
    )]
)

我应该在 setup 函数中添加哪些选项?是否可以在 Python 和 cx_Freeze 的当前版本中执行?或者我应该像 this 那样修补 cx_Freeze?

我的问题在5.1版本已经差不多解决了。构建目录中只有 5 个项目:

  • lib文件夹
  • exe文件
  • 3 个 dll(python36、sqlite、vcruntime)

对我来说没问题,但 exe 文件不起作用。出现错误 ModuleNotFoundError: no module named 'codecs'

答案已找到here。当前版本(目前是5.1)有错误,但是补丁已经打好了。不幸的是,新版本 (5.1.1) 不在 PyPI 中。

尽管如此,解决方案非常简单:从源代码构建 cx_Freeze。提到here。 (需要Visual Studio,我用的是2013年的一个)。或者你可以等一会儿,我希望新版本很快就会出现在 PyPI 中。

cx_Freeze 5.1.1 同时在 PyPI 中,参见 https://pypi.org/project/cx_Freeze/#history ; cx_Freeze 6.0b1 和预发布版一样。

为了简化 Windows 用户之间的共享,您可以让 cx_Freeze 通过 运行 将安装脚本构建为一个简单的安装程序:

python build.py bdist_msi

http://cx-freeze.readthedocs.io/en/latest/distutils.html#distutils-setup-script

或者,为了制作更可定制的安装程序,您可以使用基于脚本的工具,例如 NSIS (Nullsoft Scriptable Install System) 和 运行 cx_Freeze 安装脚本之后的安装程序生成脚本.