因此,我正在尝试为我的独立 OSX Python 应用程序组合一个自动更新功能,该应用程序基于 PyObjC 构建。只需通过 py2app 打包它就可以很好地工作,但我正在尝试用 Esky 冻结它,作为实现更新功能的一部分。
据我所知,这是我为 Esky 设置的 setup.py 格式。我不确定如何告诉 Esky 将我的 .Xib 文件的名称传递给 py2app。这是我的直接 py2app setup.py 的样子,成功包含 GUI 所需的 .Xib 文件:
Py2app 的 setup.py
from setuptools import setup
APP = ['MyApp.py']
DATA_FILES = ['MyApp.xib']
OPTIONS = {'argv_emulation': False, 'packages' : ['PIL']}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
iconfile="MyApp.icns"
)
环顾其他人的帖子,您似乎可以通过结构略有不同的 Esky setup.py 将设置传递给 py2app,但我一生都无法弄清楚传递 .Xib 文件的参数的确切结构从 Esky 到 py2app。
Esky 的 setup.py
from esky import bdist_esky
from distutils.core import setup
setup(name="MyApp",
version="1.3.3",
iconfile="MyApp.icns",
data_files=['MyApp.xib'],
scripts=["MyApp.py","midheaven.py"],
options={"bdist_esky":{
"includes":["PIL"],
"excludes":['pydoc'],
"freezer_module": "py2app",
"freezer_options": {
"plist": {
'argv_emulation': False,
'packages': ['PIL'],
},
"data_files": ['MyApp.xib'],
},
},
},
)
一切打包都没有错误,但当然,如果我尝试运行应用程序的 Esky 冻结,它会立即崩溃。我很肯定这是因为它没有正确附加 .Xib GUI。任何人都有这方面的经验,或者关于如何实际格式化的想法?绝对很想弄清楚这一点,并将其保存在此处以供后代使用。