2017-02-15 15 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')