使用Esky冻结/打包Cocoa PyObjC Python应用程序

2024-04-29 08:42:20 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我正在尝试为我的独立OSX Python应用程序组合一个自动更新功能,它构建在PyObjC上。只需通过py2app打包就可以了,但是我正试图用Esky冻结它,作为实现更新特性的一部分。在

据我所知这是我的设置.py为Esky设置格式。我不知道如何告诉Esky将我的.Xib文件名传递给py2app。这是我的直接py2app设置.py看起来,成功地包含了GUI所需的.Xib文件:

设置.py对于Py2app

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将设置传递给py2app设置.py,但我一辈子都搞不清从Esky将.Xib文件传递给py2app的参数的确切结构。在

设置.py对于Esky

^{pr2}$

所有的包都没有错误,但是如果我尝试运行应用程序的Esky冻结,它会立即崩溃。我肯定这是因为它没有正确地附加.Xib图形用户界面。有没有人有过这样的经验,或者对如何格式化这个有什么想法?我很想知道这一点,并把它放在这里供后人使用。在


Tags: 文件py功能app应用程序datasetupfiles
1条回答
网友
1楼 · 发布于 2024-04-29 08:42:20

你是对的,埃斯基做了一些不同于你预期的事情。查看demo/tutorial文件夹是让我走上正确道路的原因。在

setup(name="MyApp",
      data_files=[('', ['MyApp.xib']),
                 ('files', ['file1', 'file2']),
                 ('img', glob(r'.\img\*.*'))
                  ]
      ...

所以你有一大堆元组,第一个条目是包中包含文件的路径,第二个条目是要放在那里的一个iterable文件

您可以删除选项dict中的第二个data_文件实例

更新

试试看

^{pr2}$

相关问题 更多 >