在Flask程序中使用py2app时,我无法找到任何文档。我应该如何设置setup.py文件?
答案 0 :(得分:1)
你需要做(至少)两件事来通过py2app制作带烧瓶的macOS应用程序:
setup.py
__init__.py
首次使用setup.py
的正版packages
构建应用后,如果resources
列表正确,则无法提供静态内容和模板(直到您在setup.py
中配置__init__.py
列表并重新配置应用的setup.py
)。您必须将模板文件夹和静态文件夹设置为__init__.py
和$ ./dist/myapp.app/Contents/MacOS/myapp
都可以使用的位置。
但是,在你太兴奋之前,你应该意识到你的新应用会遇到(重大)新问题:首先,应用程序没有图标,没有菜单存在,也没有办法给你反馈。你将需要强行退出"强制退出"退出它。通过终端运行可能更有用:
../../templates
但这是大问题:您只是用绝对路径硬编码模板的路径。如果您移动应用程序,它将失去查找其数据的能力:
jinja2.exceptions.TemplateNotFound
如果你稍微蠢蠢欲动,那么将模板路径设置为python36.zip
之类的东西可能会起作用。它没有赢。 py2app及其魔法将在您需要目录的烧瓶路径中包含一个文件:类似setup.py
您可能最终希望从您的应用中获得更多。但这绝对是一个开始:编译。如你所见,我或多或少地停在这里。我并不急于让我的脚本成为一个应用程序,它看起来像py2app和烧瓶真的不想很好地一起玩。可能有一种方法可以获得编译和真正可移植的东西,但我不是那个为你回答这个问题的人。祝你好运!
<小时/> 示例
"""
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')
string[] Paths = Directory.GetFiles(path,"*.txt");
string[] stripchars1={"<","?","."};
string[] chars2={"s","w","n"};
foreach (string file in Paths)
{
TextReader objstream = new StreamReader(file);
foreach (string character in stripchars1)
{
file.Replace(character, " ");
}
foreach (string character in chars2)
{
file.Replace(character, "h");
}
}