我该如何使用py2app?

7

好的 - 开始吧。 我正在尝试学习如何使用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个回答

9

您成功地使用了 py2app - 它只是快速打开,输出 "hello",然后立即关闭!

如果您想看到一些东西,请让它暂停一会儿:

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

time.sleep 函数可以将程序暂停指定的秒数。


1
好的回答 - 虽然没有显示任何内容,因为没有图形用户界面,但感谢您的提示 :-) - Grahame Thomson

5

对于使用 py2app 的应用程序,您真正只希望使用 GUI 应用程序或在后台运行的应用程序。

如果您想从命令行运行由 py2app 构建的应用程序,则需要在应用程序包内部执行二进制文件;应用程序包本身不是直接可执行的,因此可以尝试类似以下方式:

dist/hello.app/Contents/MacOS/hello

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

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接