Файл Setup.py для объединения программы Flask с py2app

91
12

Я не могу найти какую-либо документацию для использования py2app с программой Flask. Как настроить файл setup.py?

Здесь зависимости, с которыми я работаю

спросил(а) 2017-02-15T23:01:00+03:00 3 года, 7 месяцев назад
1
Решение
99

Вам нужно сделать (по крайней мере) две вещи, чтобы сделать приложение macOS с флягой через py2app:

    правильно настройте setup.py перенастройте свой __init__.py

Получение, которое ударит после того, как вы создадите приложение в первый раз с помощью хорошей версии setup.py с правильным списком packages неспособно обслуживать ваш статический контент и шаблоны (пока вы не настроите список resources в setup.py и перенастройте приложение __init__.py). Вы должны установить папку шаблона и статическую папку где-нибудь, что могут использоваться как setup.py и __init__.py.

Но, прежде чем вы будете слишком взволнованы, вы должны понимать, что у вас появятся (значительные) новые проблемы с вашим новым приложением: во-первых, приложение не имеет иконки, не присутствует в меню и не дает вам обратной связи. Для выхода из него вам понадобится "Force Quit". Вероятно, более удобно работать через терминал:

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

Но вот большая проблема: вы просто закодировали путь к шаблонам с абсолютным путем. Если вы переместите приложение, оно потеряет возможность находить свои данные:

jinja2.exceptions.TemplateNotFound

Если вы соскучитесь немного, вы соблазняетесь тем, что настройка шаблона на что-то вроде ../../templates будет работать. Это не так. py2app и его магия будут содержать файл в ваших python36.zip где вам нужен каталог: что-то вроде python36.zip.


В конце концов, вы, вероятно, захотите получить больше от своего приложения. Но это определенно начало: скомпилировано. Как вы можете видеть, я более или менее остановился здесь. Я не отчаянно хотел, чтобы мои скрипты были приложением, и это выглядело так, как py2app и фляжка действительно не хотели хорошо играть вместе. Вероятно, есть способ получить что-то как скомпилированное, так и по-настоящему портативное, но я не тот, кто отвечает на этот бит для вас. Удачи!

sample 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')

ответил(а) 2017-07-01T18:49:00+03:00 3 года, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема