2011-04-09 53 views
7

好的 - 在這裏。我想學習如何使用py2app,所以我創建了一個簡單的python文件;只是hello_world.py我該如何使用py2app?

#! /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' 

我花了一整天google搜索,但不能發現我真的堅持:-(

我不知道如果這能幫助任何教程或指南等,但是這是在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'], 
) 

回答

10

你已經成功地使用了py2app - 它剛剛打開,打印出「hello」,然後很快關閉!

如果你想看到的東西,然後使它暫停了一下:

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

time.sleep暫停的給定秒數的程序。

+0

或確保您已正確縮進* main *函數,否則您將收到IndentationError! – James 2011-04-09 19:08:56

+1

很好的答案 - 雖然沒有任何顯示,因爲沒有GI但感謝提示:-) – 2011-04-09 19:14:02

4

你真的只想在GUI應用中使用py2app,或者在後臺運行。

如果要從命令行運行py2app構建的應用程序,則需要在應用程序包內執行二進制文件;捆綁本身不直接執行的,所以這樣的事情:

dist/hello.app/Contents/MacOS/hello 

對於腳本,只是打印到標準輸出,你可以嘗試Platypus(儘管它不會做py2app的依賴包裝的東西)。

+1

感謝這項工作*豎起大拇指* – 2011-04-09 19:14:36

1

看來它一直在工作 - 腳本運行得很快,我沒有機會看到它。如果有人遇到此問題,請轉至http://svn.pythonmac.org/py2app/py2app/trunk/doc/index.html並按照教程進行操作。還請閱讀給出的答案和我離開的答覆。

+1

你應該接受@詹姆斯答案。 (點擊答案旁邊的複選標記。) – 2013-09-22 18:18:14