cx_Freeze 包含依赖的 py 文件

Posted

技术标签:

【中文标题】cx_Freeze 包含依赖的 py 文件【英文标题】:cx_Freeze to include dependent py files 【发布时间】:2018-12-12 06:53:08 【问题描述】:

我正在使用以下安装文件为 python 应用程序创建安装程序

from cx_Freeze import setup, Executable 

buildOptions = dict(excludes = ["tkinter"], includes =["idna.idnadata"], optimize=1)

setup(name = "SoftwareGateway" , 
      version = "0.1" , 
      description = "" , 
      options =dict(build_exe = buildOptions),
      executables = [Executable("main.py", base = base)])

安装文件自己获取依赖项,但在我的情况下,main.py 使用子进程调用调用另一个 python 程序fun.py。当我运行setup.py 时,fun.py 既没有被编译,也没有在安装后进入目录。

有没有办法可以将fun.py 编译为字节码并将其与安装程序一起打包?

【问题讨论】:

【参考方案1】:

尝试在您的main.py 中添加import fun 并使用fun.__file__ 在您的子进程调用中获取已编译乐趣的正确位置(假设fun.pymain.py 在同一目录中)。这应该可以满足您的要求。

但是为什么不简单地将fun.py 的内容打包成一个函数并调用这个函数而不是子进程调用呢?

【讨论】:

我同意你将它们称为函数而不是子进程,但代码是由其他人开发的,我只是为其创建安装程序。目前我无权修改现有代码。

以上是关于cx_Freeze 包含依赖的 py 文件的主要内容,如果未能解决你的问题,请参考以下文章

Cx_Freeze - 自动包含模块

Python cx_Freeze - 一个可执行文件不打开另一个?

使用 cx_Freeze 时如何包含图像?

使用 cx_freeze 将脚本转换为 .exe 时如何包含 tkinter?

使用 cx_Freeze 从 .py 构建一个 .exe 文件

在 Mac 上使用 cx_Freeze 从 .py 创建 .exe