python创建一个简单的flask应用

下面用python在本地和服务器上分别创建一个简单的flask应用:
1.在pc本地
1)pip flask后创建一个简单的脚本flask_demo.py

from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello_world():return 'Hello, World!'
  1. win+R进入命令行,切换到flask_demo.py的路径,执行
flask run

启动应用

如果显示启动失败,可能的原因是:
设置FLASK_APP环境变量:在命令行中输入以下命令,将FLASK_APP环境变量设置为应用程序文件名(不包括.py扩展名):
set FLASK_APP=your_app_file_name(如flask_demo)
然后再次尝试运行应用程序。
在这里插入图片描述
可以看到这里已经启动成功。

此时,可以在本地浏览器访问:(默认是5000端口)
在这里插入图片描述
同一局域网内的设备也可以通过ip地址来访问。

  1. 在服务器上部署
    1)和本地类似,在服务器上创建脚本
    在这里插入图片描述
    2)用virtualenvwrapper为flask应用单独创建一个虚拟环境
 pip install virtualenvwrapper

安装virtualenvwrapper时,你无需在特定的目录下进行。可以在终端中直接运行pip install virtualenvwrapper命令来进行安装。这个命令会自动下载并安装virtualenvwrapper工具,无论你当前所在目录是什么,都不会影响安装过程。
安装好virtualenvwrapper后,我们在/data/flask_demo的目录下创建名为flask_demo的虚拟环境:
在这里插入图片描述
刷新一下,可以看到多了一个flask_demo的文件夹:
在这里插入图片描述
激活新建的虚拟环境:

source /data/flask_demo/flask_demo/bin/activate

其中data/flask_demo/flask_demo 是虚拟环境的路径
在这里插入图片描述
可以看到已经切换成功。

3)在虚拟环境中下载依赖的pip包,如flask等:
查看当前虚拟环境中有哪些库:
在这里插入图片描述
可以看到,我们所需要的flask此时并不在虚拟环境中,因此需要进行手动下载。
4)在本地导出所在环境的pip依赖包:
先切换到虚拟环境所在的目录,激活该虚拟环境,然后执行

pip freeze > requirements.txt

将得到本地环境中的所有依赖库:
在这里插入图片描述
将这个文件传到服务器,requirements.txt文件通常应该放在项目的根目录下,也就是包含项目代码的主目录中。
5)在2)步激活服务器的虚拟环境后,将requirements.txt文件中的依赖包同步到虚拟环境中,可以使用以下命令:

pip install -r requirements.txt

在这里插入图片描述
可以看到已经在flask_demo这个虚拟环境中安装了requirements.txt中的依赖包
6)启动应用

 export FLASK_APP=/data/flask_demo/flask_demo.pyflask run

此时虽然可以在本地测试,但是无法在外网进行访问。
7) 开放外网访问
我用的是腾讯云轻量服务器,其开放端口有两个需要设置的地方:
第一个在控制台的防火墙这里添加规则,开放自己需要的端口
在这里插入图片描述
在这里插入图片描述
第二个地方是在服务器内部防火墙,把端口打开
查询当前打开的端口

firewall-cmd --list-all

在这里插入图片描述
这里就是打开的端口

如果此处没有自己想要的端口,则需要进行开放,如:

firewall-cmd --permanent --add-port=62234/tcp && firewall-cmd --reload

此时,再运行py脚本
结果报错了

ImportError: cannot import name 'EVENT_TYPE_OPENED' from 'watchdog.events' (/data/flask_demo/flask_demo/lib/python3.10/site-packages/watchdog/events.py)

更新一下watchdog

pip install --upgrade watchdog

在这里插入图片描述
运行成功!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/180879.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【多线程】线程的创建

创建线程如下几个方法: 目录 继承Thread类 调用start方法启动线程 调用run方法 实现Runnable接口 实现Callable接口 继承Thread类 调用start方法启动线程 public class TestThread extends Thread{//继承Thread类//重写run方法public void run(){for(int i0…

【网络】HTTPS协议

HTTPS协议 一、什么是HTTPS二、数据的加密1、常见的加密方式2、数据摘要(数据指纹)3、数字签名 三、HTTPS 的工作过程探究1、方案 1 - 只使用对称加密2、方案 2 - 只使用非对称加密3、方案 3 - 双方都使用非对称加密4、方案 4 - 非对称加密 对称加密 四…

pb:导入EXCEL,提示“不能连接EXCEL”

pb:导入EXCEL,提示“不能连接EXCEL” ------------------------------------------------------------------------------------------------------------------------------- 1.pb连上EXCEL代码: //从EXCEL读取文件 STRING LS_PATH,LS_FILE,ls_file_tmp oleobject ole_1…

webpack 高级

高级配置就是要进行 webpack 优化,让代码在编译、运行时性能更好 主要从以下角度去优化: 1、提升开发体验 2、提升打包构建速度 3、减少代码体积 4、优化代码运行性能 一、提升体验 1、SourceMap 为什么 打包出来的所有css和js合并成了一个文件&#…

Linux - 进程控制(下篇)- 进程等待

进程等待 为什么进程需要等待? 我们知道,在Linux 当中,父子进程之间一些结构就是一些多叉树的结构,一个父进程可能管理或者创建了很多个字进程。 而其实我们在代码当中使用fork()函数创建的子进程的父进程…

tolua中table.remove怎么删除表中符合条件的数据

tolua中table.remove怎么删除表中符合条件的数据 介绍问题(错误方式删除数据)正确删除方案从后向前删除递归方式删除插入新表方式 拓展一下总结 介绍 在lua中删除表中符合条件的数据其实很简单,但是有一个顺序问题,因为lua的表中…

1.如何实现统一的API前缀-web组件篇

文章目录 1. 问题的由来2.实现原理3. 总结 1. 问题的由来 系统提供了 2 种类型的用户,分别满足对应的管理后台、用户 App 场景。 两种场景的前缀不同,分别为/admin-api/和/app-api/,都写在一个controller里面,显然比较混乱。分开…

Mgeo:multi-modalgeographic language model pre-training

文章目录 question5.1 Geographic Encoder5.1.1 Encoding5.1.2 5.2 multi-modal pre-training 7 conclusionGeo-Encoder: A Chunk-Argument Bi-Encoder Framework for Chinese Geographic Re-Rankingabs ERNIE-GeoL: A Geography-and-Language Pre-trained Model and its Appli…

Gradle笔记 一 Gradle的安装与入门

文章目录 Gradle 入门Gradle 简介学习Gradle 的原因: 常见的项目构建工具Gradle 安装Gradle 安装说明安装JDK 下载并解压到指定目录配置环境变量检测是否安装成功 Gradle 项目目录结构Gradle 创建第一个项目Gradle 中的常用指令修改maven 下载源Wrapper 包装器使用教…

【C++】继承

本期我们来学习c中的继承 目录 一、啥是继承 二、继承的定义 1.1 定义格式 1.2 继承方式 三、基类和派生类对象赋值转换 四、继承中的作用域 五、派生类的默认成员函数 5.1 派生类的构造函数和基类构造函数的关系 5.2 派生类的拷贝函数和基类拷贝函数的关系 5.3 派生…

Python算法例7 四数乘积

1. 问题描述 给定一个长度为n的数组a和一个正整数k,从数组中选择四个数,要求四个数的乘积小于等于k,求方案总数。 2. 问题示例 给定n5,a[1,1,1,2,2],k3,返…

小程序day02

目标 WXML模板语法 数据绑定 事件绑定 那麽問題來了,一次點擊會觸發兩個組件事件的話,該怎么阻止事件冒泡呢? 文本框和data的双向绑定 注意点: 只在标签里面用value“{{info}}”,只会是info到文本框的单向绑定,必须在…

【Linux】多路IO复用技术②——poll详解如何使用poll模型实现简易的一对多服务器(附图解与代码实现)

在阅读本篇博客之前,建议大家先去看一下我之前写的这篇博客,否则你很可能会一头雾水 【Linux】多路IO复用技术①——select详解&如何使用select模型在本地主机实现简易的一对多服务器(附图解与代码实现)http://t.csdnimg.cn/…

JavaEE平台技术——预备知识(Web、Sevlet、Tomcat)

JavaEE平台技术——预备知识(Web、Sevlet、Tomcat) 1. Web基础知识2. Servlet3. Tomcat并发原理 1. Web基础知识 🆒🆒上个CSDN我们讲的是JavaEE的这个渊源,实际上讲了两个小时的历史课,给大家梳理了一下&a…

为机器学习算法准备数据(Machine Learning 研习之八)

本文还是同样建立在前两篇的基础之上的! 属性组合实验 希望前面的部分能让您了解探索数据并获得洞察力的几种方法。您发现了一些数据怪癖,您可能希望在将数据提供给机器学习算法之前对其进行清理,并且发现了属性之间有趣的相关性&#xff0c…

Web自动化测试 —— PageObject设计模式!

一、page object 模式简介 1.1、传统 UI 自动化的问题 无法适应 UI 频繁变化无法清晰表达业务用例场景大量的样板代码 driver/find/click 二、page object 设计原则 2.1、POM 模式的优势 降低 UI 变化导致的测试用例脆弱性问题让用例清晰明朗,与具体实现无关 2.…

三、操作系统

(一)概述 操作系统是管理整个系统的软、硬件资源的系统,既是人和硬件之间的一种接口,也是应用软件与硬件之间的接口。 (二)进程管理 1.进程的状态 进程的状态是操作系统对进程进行管理的时候设置的几种状…

Gopro hero5运动相机格式化后恢复案例

Gopro运动相机以稳定著称,旗下的Hero系列销售全球。下面我们来看一个Hero5格式化后拍了少量素材的恢复案例。 故障存储:64G MicroSD卡 Exfat文件系统 故障现象: 64G的卡没备份数据时做了格式化操作又拍了一条,发现数据没有备份,客户自行使…

c语言经典算法—二分查找,冒泡,选择,插入,归并,快排,堆排

一、二分查找 1、前提条件&#xff1a;数据有序&#xff0c;随机访问&#xff1b; 2、实现&#xff1a;递归实现&#xff0c;非递归实现 3、注意事项&#xff1a; 循环退出条件:low <high,low high.说明还有一个元素&#xff0c;该元素还要与key进行比较 mid的取值&#xf…

C# list<T>去重

文章目录 C# list<T>去重值类型去重List<object>object is intobject is decimalobject is charobject is boolobject is string List<int>List<string> 引用类型去重 C# list去重 值类型去重 List object is int //object is intList<object&g…