2017-02-15 9 views

답변

0

당신은 (적어도) py2app를 통해 플라스크와 맥 OS 응용 프로그램을 만드는 두 가지를 수행해야합니다

  • setup.py 제대로
  • 재구성을 구성 당신의 __init__.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처럼 보이고 플라스크는 함께 잘 돌아가고 싶지 않았습니다. 컴파일되고 진정으로 이식 가능한 것을 얻을 수있는 방법이 있을지 모르겠지만, 나는 그 비트에 대답 할 사람이 아닙니다. 행운을 빕니다!


샘플 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') 
수정