更改Python cx_Freeze项目

时间:2017-09-12 14:17:29

标签: python cx-freeze

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

  • Python 3.6.1
  • cx_Freeze模块5.0.2

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

  • 可执行文件
  • 使用Python 3.6
  • zip存档
  • 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吗?

2 个答案:

答案 0 :(得分:0)

我的问题在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中使用新版本。

答案 1 :(得分:0)

同时,

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