1

我正在mac osx上用python制作一个应用程序。我正在使用 py2app 从 myapp.py python 脚本文件和 setup.py 制作 myapp.app。在我的 myapp.py 代码中,我使用终端通知器作为

def notify(title, subtitle, message):
    t = '-title {!r}'.format(title)
    s = '-subtitle {!r}'.format(subtitle)
    m = '-message {!r}'.format(message)
    os.system('terminal-notifier {}'.format(' '.join([m, t, s])))

notify(
    title    = 'Title message',
    subtitle = 'with python',
    message  = 'Validating user'
)

安装为后显示通知工作正常sudo gem install terminal-notifier。我的系统中存在终端通知程序in location /Library/Ruby。我的问题是how to include this in py2app for developing my app, as py2app is not able to include terminal-notifier in myapp.app。我的 setup.py 是

from setuptools import setup

APP=['myapp.py']
DATA_FILES= [('',['config.cfg'])]
OPTIONS={'iconfile':'cc.icns','argv_emulation': True,'plist':{'CFBundleShortVersionString':'1.0'}}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app']
    )   
4

2 回答 2

0

应该可以将脚本作为数据文件包含在内(然后它会在应用程序的“资源”文件夹中结束,这是应用程序启动时的当前工作目录)

也就是说,我根本没有使用终端通知器的经验,也没有使用 Ruby 的经验,并且不知道仅复制脚本文件是否足以最终得到一个工作脚本(由于依赖关系)

顺便说一句,终端通知器似乎是一种向通知中心发送消息的工具:https ://github.com/julienXX/terminal-notifier 。这也是你可以使用 PyObjC 做的事情。

于 2013-10-27T14:30:59.140 回答
0

我遇到了同样的问题,无法找到完美的解决方案,但这种解决方法对我有用......

右键单击应用程序并选择“显示包内容”,然后选择“内容”文件夹。在“Contents”文件夹内是另一个名为“MacOS”的文件夹,打开该文件夹并找到您的应用程序的 .exe 文件。您可以为该 .exe 创建一个别名并将其拖到任何地方(即桌面或应用程序)。双击您的 .exe 的别名以启动您的应用程序,并且通知将起作用(每次运行 exe 时都会打开一个终端窗口)。

终端通知程序正在打包,因为它在您运行 exe 时可以完美运行,但由于某种原因,它不适用于通过 py2app 生成的应用程序!

于 2018-06-24T14:52:29.137 回答