2017-02-15 16 views

回答

0

你需要做的(至少)兩兩件事,以與瓶MacOS的應用程序通過py2app:

  • 配置setup.py正常
  • 重新配置__init__.py

通過的好版本第一次構建應用程序後將遇到的問題與packages的適當列表無法提供靜態內容和模板(直到您配置resources的列表setup.py並重新配置應用的__init__.py)。您必須將模板文件夾和靜態文件夾設置爲setup.py__init__.py均可使用的位置。

但是,在你太激動之前,你應該意識到你的新應用程序會出現(顯着的)新問題:首先,應用程序沒有圖標,沒有菜單存在,也沒有辦法給你反饋。您將需要「強制退出」退出它。這可能是更有用通過終端運行:

$ ./dist/myapp.app/Contents/MacOS/myapp

但這裏是問題:你剛纔硬編碼的路徑,使其具有絕對路徑。如果你逛了一下,你將成爲被可能性模板路徑設定成類似../../templates會的工作動心捅

jinja2.exceptions.TemplateNotFound

:如果移動應用程序,那麼它就會失去找到它的數據的能力。它不會。 py2app和它的魔法將在你需要一個目錄的燒瓶路徑中包含一個文件:類似於python36.zip


您可能希望從您的應用程序到最後更多。但這絕對是一個開始:編譯。正如你所看到的,我或多或少地停在這裏。我並不想讓我的腳本成爲一個應用程序,而且它看起來像py2app,並且燒瓶真的不想一起玩。有可能是一種方法來獲得編譯和真正可移植的東西,但我不是那個人爲你回答這個問題。祝你好運!


樣品 setup.py

""" 
This is a setup.py script generated by py2applet 
Usage: python setup.py py2app 
""" 
APP = ['myapp.py'] 
DATA_FILES = [] 
OPTIONS = { 
    'packages': ['flask', 'werkzeug', 'config', 'jinja2'], 
    'resources': ['./server/templates', './server/static'], 
    } 
setup(
    app=APP, 
    data_files=DATA_FILES, 
    options={'py2app': OPTIONS}, 
    setup_requires=['py2app'], 
) 


改性 __init__.py

myapp = Flask(__name__, 
    template_folder='/path/to/dist/dir/dist/myapp.app/Contents/Resources/templates', 
    static_folder='/path/to/dist/dir/dist/myapp.app/Contents/Resources/static')