创建一个启动时只打开终端的Python/py2app应用程序?
我写了一个很不错的Python应用程序,基本上是一个用于短信调制解调器的HTTP代理。我想把它做成一个可以在Mac上双击打开的应用程序。目前,我包含了一个可以双击的 .command 文件,里面的内容大致是这样的:
cd `dirname $0`
(sleep 8;open http://127.0.0.1:8080/)&
mac/slingshotsms.app/Contents/MacOS/slingshotsms
我该如何让主 .app 可执行文件调用其他地方的内容?或者说,制作一个应用程序的最简单方法是什么?这个应用程序基本上是一个终端工具的包装,只显示它的输出。目前,双击这个应用程序会使用Mac上的open工具——我想让它在双击应用程序图标时,模拟双击Contents/MacOS/slingshotsms的行为。有没有什么建议?
3 个回答
0
写一个AppleScript应用程序,这个程序可以打开终端,并运行你放在应用程序包里的Python脚本。
1
如果你其实不需要一个终端,而只是想要一个可以包裹脚本的应用程序,可以看看 Platypus。
2
如果你想要简单一点,可以试着给你的 Python 脚本加上 .command
后缀,并确保它是可执行的。比如:
#!/usr/bin/env python
# file: hello.command
print 'hello world'
如果你想要更精致的效果,那你可能需要了解一些更复杂的东西,比如启动服务、PyObjC、界面构建器、NIB 文件、应用包装器,以及各种与 Mac OS X 相关的技术细节。不过要注意,使用 PyObjC 做一些不简单的事情几乎是不可能的,除非你已经大致知道如何用 Objective-C 的 Cocoa API 来完成同样的任务。PyObjC 其实就是这些 API 的一个比较薄的包装,你需要了解 Cocoa 的一些习惯用法和设计模式,才能明白这些部分是如何组合在一起的。