Setup.py 文件,用于将 Flask 程序与 py2app 捆绑在一起

问题描述 投票:0回答:2

我在任何地方都找不到任何关于将 py2app 与 Flask 程序一起使用的文档。我应该如何设置setup.py文件?

Here's the dependencies I'm working with

python flask py2app
2个回答
2
投票

你需要(至少)做两件事来通过 py2app 使用 Flask 制作 macOS 应用程序:

  • 正确配置您的
    setup.py
  • 重新配置您的
    __init__.py

通过良好版本的

setup.py
以及正确的
packages
列表首次构建应用程序后,遇到的问题是无法提供静态内容和模板(除非您配置
resources 列表) 
中的
setup.py
并重新配置应用程序的
__init__.py
)。您必须将模板文件夹和静态文件夹设置到
setup.py
__init__.py
都可以使用的位置。

但是,在您过于兴奋之前,您应该意识到您的新应用程序将遇到(重大)新问题:首先,该应用程序没有图标,没有菜单,并且无法向您提供反馈。您需要“强制退出”才能退出。通过终端运行可能更有用:

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

但是这里存在一个问题:您只是使用绝对路径对模板的路径进行了硬编码。如果您移动应用程序,它将失去查找数据的能力:

jinja2.exceptions.TemplateNotFound

如果你仔细研究一下,你会被将模板路径设置为类似

../../templates
的可能性所诱惑。不会的。 py2app 及其魔力将在您的烧瓶路径中包含一个文件,您需要一个目录:类似
python36.zip
.


您最终可能希望从您的应用程序中获得更多。但这绝对是一个开始:编译。正如你所看到的,我或多或少就停在这里了。我并不急于让我的脚本成为一个应用程序,而且看起来 py2app 和 Flask 确实不想很好地协同工作。可能有一种方法可以让一些东西既编译又真正可移植,但我不是为你回答这个问题的人。祝你好运!


样品
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')

0
投票

在Flask中,我像上面一样编辑setup.py,没有编辑init.py,它可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.