【问题标题】:Change folder structure in Python cx_Freeze project更改 Python cx_Freeze 项目中的文件夹结构
【发布时间】:2017-09-12 14:17:28
【问题描述】:

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

  • Python 3.6.1
  • cx_Freeze 模块 5.0.2

我得到了一个exe文件,但最终的结构让我哭了:

  • 可执行文件
  • 使用 Python 3.6 压缩存档
  • 3 个 dll(python、sqlite、vcruntime)
  • 21 个文件夹
  • 10 个 pyd 文件

在我看来,这对用户来说并不方便,我想将文件夹和 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?

【问题讨论】:

    标签: python cx-freeze


    【解决方案1】:

    我的问题在 5.1 版本中几乎解决了。 build 目录中只有 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 中。

    【讨论】:

      【解决方案2】:

      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 设置脚本之后运行安装程序生成脚本。

      【讨论】:

        猜你喜欢
        • 2012-05-15
        • 2015-10-03
        • 2015-12-05
        • 2014-07-09
        • 2018-03-11
        • 2020-09-11
        • 1970-01-01
        • 2011-07-07
        • 1970-01-01
        相关资源
        最近更新 更多