【Azure 应用服务】Azure App Service (Windows) 使用Flask框架部署Python应用,如何在代码中访问静态文件呢?如何设置文件路径?是相对路径还是绝对路径呢?
2021-01-31 22:30
1771 查看
问题描述
使用Flask框架部署Python代码,如何访问其中的静态文件呢?如static问价夹中的图像资源,同时如何在代码中读取txt文件中的内容呢?是相对路径或者是绝对路径呢?
实验步骤
在App Service (Windows)环境中部署Flask Python应用时,需要考虑注意参考文档“发布到 Windows 上的 Azure 应用服务”, Python项目的Web.config内容为:
<system.webServer> <handlers> <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="D:\home\Python361x64\python.exe|D:\home\Python361x64\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/> </handlers> </system.webServer>
而特别对于Flash项目,需要添加项目的启动配置:
Flask:将
WSGI_HANDLER值更改为<project_name>.app,其中<project_name>与项目名称匹配。 可通过查看runserver.py中的from <project_name> import app语句,找到准确的标识符。 例如,如果项目命名为“FlaskAzurePublishExample”,则该条目如下所示:<!-- Flask apps only: change the project name to match your app --> <add key="WSGI_HANDLER" value="FlaskAzurePublishExample.app"/>
以下的实验是在通过相对路径访问静态图片:
- 首先项目路径如下(项目发布到Azure后,通过Kudu站点查看项目文件路径)
- [li]静态文件放在了static这个文件夹下
- test.py运行代码如下:
-
from flask import Flask,render_template app = Flask(__name__, static_folder='', static_url_path='') @app.route('/') def index(): return render_template('index.html') if __name__ == '__main__': app.run()
- 测试结果,直接访问站点根目录时可以访问到静态文件
以上是通过HTML访问项目中的静态资源文件,如果是需要通过代码的方式读取txt文件中的内容,由于可能存在发布后的相对路径与本地测试时候路径不一致,所以建议使用部署在App Service中的绝对路径。如:open(‘D:/hone/site/wwwroot/static/test.txt’,’r’)
但如果一定需要使用相对路径,这可以考虑使用App Service Home路径的环境变量,如:open(‘%HOME%/site/wwwroot/static/test.txt,’r’) 。
参考资料
发布到 Windows 上的 Azure 应用服务:https://docs.microsoft.com/zh-cn/visualstudio/python/publish-to-app-service-windows?view=vs-2019#publish-to-app-service---visual-studio-2017-and-later
相关文章推荐
- 【应用服务 App Service】在Azure Web App的部署文件中,是否可以限制某些文件无法被访问?(如json)
- 【Azure 应用服务】在Azure App Service for Windows 中部署Java/NodeJS/Python项目时,web.config的配置模板内容
- 【干货】教你如何设置hdfs文件系统用户目录,以便轻松使用hdfs dfs -ls命令快速访问对于当前目录下相对路径的hdfs文件
- 解决python模块调用时代码中使用相对路径访问的文件,提示文件不存在的问题
- 问题四:对于日志框架logback的使用的时候,输出日志到文件的时候,设置文件,不能设置为相对文件,需要使用绝对路径
- 三十八、python学习之Django框架(一):入门,介绍,设计模式,环境搭建,项目创建,基本配置,创建视图,静态文件,路由与反解析,App应用配置
- Windows下Python2 Flask项目运行路径包含中文时,获取静态文件后台报错UnicodeDecodeError
- 如何使用Azure Container Service Engine在Azure中国区部署容器服务(一):DC/OS篇
- 如何使用Azure Container Service Engine在Azure中国区部署容器服务(一):DC/OS篇
- 如何使用Azure云服务和SQL Database部署PHP应用
- JSP页面中如何使用相对路径访问文件
- 配置文件使用绝对路径还是相对路径?
- 文件路径(相对、绝对路)、项目设置中的使用
- python学习_Jupyter Notebook_为什么读取文件使用了绝对路径还是报错
- [New Portal]Windows Azure Web Site (5) 如何选择Windows Azure托管服务的类型?WebSite, Cloud Service还是Virtual Machine
- Python脚本中使用了os.path.dirname()时应注意执行脚本时使用的是绝对路径还是相对路径
- 如何使用Python获取某个路径下面所有文件的绝对路径以及其他操作
- python文件调用中相对路径、绝对路径的使用
- 如何使用新浪微博账户进行应用登录验证(基于Windows Azure Mobile Service 集成登录验证)
- Python的Flask框架及Nginx实现静态文件访问限制功能