Чтобы упростить настройку, рассмотрите возможность использования Angular CLI , чтобы поместить все файлы в каталог дистрибутива во время процесса сборки, т. Е. Указав outputPath
в angular.json.Вы можете использовать раздел angular.json assets
для перемещения файлов Python во время сборки.
angular.json
"your-project": {
"root": "your-project-directory",
"sourceRoot": "your-project-directory/src",
"projectType": "application",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "dist",
"index": "your-project-directory/src/index.html",
"main": "your-project-directory/src/main.ts",
...
"assets": [
{
"glob": "**/*",
"input": "your-project-directory/src/assets/",
"output": "assets"
},
{
"glob": "**/*",
"input": your-project-directory/src/python/",
"output": "."
}
На верхнем уровне dist
каталог, поместите ваш main.py с базовой настройкой Flask вместе с index.html.Обратите внимание на static_proxy , чтобы обеспечить поддержку файлов.
main.py
from flask import Flask, send_from_directory
app = Flask(__name__)
@app.route('/<path:path>', methods=['GET'])
def static_proxy(path):
return send_from_directory('./', path)
@app.route('/')
def root():
return send_from_directory('./', 'index.html')
if __name__ == '__main__':
# This is used when running locally only. When deploying use a webserver process
# such as Gunicorn to serve the app.
app.run(host='127.0.0.1', port=8080, debug=True)
@app.errorhandler(500)
def server_error(e):
return 'An internal error occurred [main.py] %s' % e, 500