Python 如何使用cx\ U冻结可执行文件,以及如何减小生成的可执行文件的大小

Python 如何使用cx\ U冻结可执行文件,以及如何减小生成的可执行文件的大小,python,anaconda,cx-freeze,Python,Anaconda,Cx Freeze,我制作了一个python脚本,现在我想用cx\u freeze使其可执行。这是我第一次 我的代码: from cx_Freeze import setup, Executable build_exe_options = {'packages': ['pandas','os']} setup( name = "monprog", version = "0.1", options = {"build_exe": build_exe_options},

我制作了一个python脚本,现在我想用cx\u freeze使其可执行。这是我第一次

我的代码:

    from cx_Freeze import setup, Executable


build_exe_options = {'packages': ['pandas','os']}


setup(
    name = "monprog",
    version = "0.1",
    options = {"build_exe": build_exe_options},
    description = "Convert_program",
    executables = [Executable("test.py")],
)
它可以工作,但我的文件太大(2GB)。许多库文件(150-200库)被导入到可执行帮助程序中

我的程序非常简单,有2个导入(熊猫和操作系统)和50行代码。“选项”参数可能有错误

如何减少程序大小

谢谢`

注:我使用anaconda平台

逐字摘自:

cx_Freeze的部分目的是捆绑所有依赖项,以便最终用户无需安装它们。numpy、matplotlib等不是小的依赖项,特别是因为它们有大型二进制(非Python)组件。因此,您提出的问题在物理上是不可能的,不是因为cx_冻结限制,而是因为以下两个要求之间存在矛盾:

  • 最终用户应该能够在任何Windows机器上运行可执行文件,包括可能没有Python、numpy和matplotlib的机器
  • 分布式二进制大小应该很小
您不能同时满足这两个要求。cx_冻结适用于第一种,但不适用于第二种。如果您可以假设您的最终用户已经安装了Python、numpy、matplotlib(或者可以单独安装),并且希望分发二进制大小较小的程序,那么轮子就更合适了

我成功了

我用最少的包装(仅熊猫和cx_冷冻)创建新的蟒蛇环境。然后我用cx_-freeze编译

以前,我的文件夹是2go,现在只有280个月

但是,要在其他机器上导出,我必须在文件夹中添加mkl*.dll。这些dll位于anaconda文件中 在我的电脑上:D:\anaconda\pkgs\mkl-2020.0-166\Library\bin

复制所有mkl*.dll和libiomp5md.dll


为避免错误导入:mkl_intel_thread.dll

感谢您的回答。然而,在我的例子中,我只使用pandas和os。尺寸是2码。必须有一种方法不导出所有库:在我的文件夹“build”中,我有Qt5、matplotlib等,当它对我的程序有用时。