使用 cx_freeze 创建的 .app 在启动时立即关闭
Posted
技术标签:
【中文标题】使用 cx_freeze 创建的 .app 在启动时立即关闭【英文标题】:.app created with cx_freeze instantly closing on launch 【发布时间】:2017-01-22 09:56:33 【问题描述】:我正在 python 中制作一个非常简单的应用程序,使用 Tkinter 作为 GUI,并使用 cx_freeze 来构建它。 这一切都在一个简单的“sleep.py”文件中。
cx_freeze使用的setup.py文件如下:
from cx_Freeze import setup, Executable
executables = [
Executable('sleep.py', base=None)
]
setup(name='Sleep Calculator',
version='0.90',
description='Sample cx_Freeze script',
executables=executables
)
sleep.py 文件正在正确启动:
- 从终端在 MacOS 中启动时
- 在 MacOS 中使用 python3 setup.py build
构建时
- 在 Windows 中使用 python3 setup.py build_exe
构建,然后手动将 tkinter 文件复制到 cx_freeze 创建的构建文件夹中
所以我有一个可以在 Windows 和 Mac 上运行的 sleep.py 文件,一个在 MacOS 上运行的脚本,以及一个在 Windows 上运行的 EXE。
但是,当尝试使用 python3 setup.py bdist_mac
构建到 .app 时,我得到的应用在启动时会立即关闭。
在启动过程中,我在控制台中收到的唯一消息是 “从用户 CFPrefsD 加载首选项以进行搜索列表”
在构建期间,我得到了多个
fatal error: /Library/Developer/CommandLineTools/usr/bin/otool: internal objdump command failed
错误。 Xcode 没有安装,但是 CommandLineTools 安装了。
目前我对 OS X 几乎一无所知,因此欢迎任何帮助, 谢谢!
【问题讨论】:
【参考方案1】:我遇到了同样的问题,带有 cx_freeze 的应用程序一打开它就会关闭,但在包中运行可执行文件会起作用。
通过打开构建的包并编辑 info.plist 文件为我解决了这个问题。
添加捆绑标识符后,它会按原样启动。
<key>CFBundleIdentifier</key>
<string>My App</string>
【讨论】:
以上是关于使用 cx_freeze 创建的 .app 在启动时立即关闭的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python 3.2 和 cx_Freeze 创建 Windows 可执行文件
使用 cx_freeze 冻结后的绝对路径(Qt5 / PySide2 App)