我该如何使用py2app?

时间:2011-04-09 18:57:06

标签: python macos py2app

好的 - 这里有。我正在尝试学习如何使用py2app,所以我创建了一个简单的python文件;只是hello_world.py

#! /usr/bin/env python
def main():
print "Hello"

if __name__=="__main__":
    main()

我按照教程进行了以下操作:

py2applet --make-setup hello.py
python setup.py py2app -A

这创建了两个子目录(build和dist),在dist中有一个名为hello.app的文件。我试图通过GUI启动它,但它启动不到一秒钟然后就消失了。然后我去了CL,但只是试图运行它没有用,所以我用了:

python hello.app

出现以下错误:

/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python: can't find '__main__.py' in 'hello.app'

我花了一整天的谷歌搜索,但找不到任何教程或指南等。我真的被卡住了: - (

我不知道这是否有帮助,但这就是setup.py

中的内容
"""
This is a setup.py script generated by py2applet

Usage:
    python setup.py py2app
"""

from setuptools import setup

APP = ['hello.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': True}

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

3 个答案:

答案 0 :(得分:10)

您已成功使用py2app - 它只是打开,打印“hello”然后很快关闭!

如果你想看到某些内容,请暂停一下:

print "Hello"
import time
time.sleep(5)

time.sleep 暂停程序的秒数。

答案 1 :(得分:5)

你真的只想将py2app用于GUI应用程序,或者在后台运行的应用程序。

如果要从命令行运行py2app构建的应用程序,则需要在应用程序包中执行二进制文件; bundle本身不能直接执行,所以像这样:

dist/hello.app/Contents/MacOS/hello

对于只打印到stdout的脚本,您可以尝试Platypus(虽然它不执行py2app的依赖包装)。

答案 2 :(得分:1)

它似乎一直在运作 - 脚本运行得如此之快,我没有机会看到它。如果有人遇到此问题,请转到http://svn.pythonmac.org/py2app/py2app/trunk/doc/index.html并按照教程进行操作。另请阅读给出的答案和我留下的答复。