如何使用py2app?

7 投票
3 回答
13025 浏览
提问于 2025-04-16 15:24

好的,开始吧。我正在学习如何使用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的文件。我试着通过图形界面打开它,但它只显示了一秒钟就消失了。然后我去命令行尝试运行它,但直接运行也不行,所以我用了:

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 个回答

1

看起来这个脚本一直都在正常工作,只是它运行得太快了,我没来得及看到。如果有人遇到这个问题,可以去 http://svn.pythonmac.org/py2app/py2app/trunk/doc/index.html 看一下教程。同时也请阅读一下其他人给出的回答和我留下的回复。

5

你其实只想在图形界面应用程序或者后台运行的程序中使用py2app。

如果你想从命令行运行用py2app打包的应用程序,你需要在应用程序包里面找到可执行的文件;因为整个包不能直接运行,所以你需要这样做:

dist/hello.app/Contents/MacOS/hello

对于那些只是输出信息到控制台的脚本,你可以试试Platypus(不过它不处理像py2app那样的依赖打包问题)。

9

你已经成功使用了py2app - 它会打开,打印“hello”,然后很快就关闭了!

如果你想看到一些东西,可以让它暂停一下:

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

time.sleep 是让程序暂停指定秒数的一个方法。

撰写回答