当前位置: 首页 > article >正文

基于Flask与Ngrok实现Pycharm本地项目公网访问:从零部署

目录

概要

1. 环境与前置条件

2. 安装与配置 Flask

2.1 创建虚拟环境

2.2 安装 Flask

3. 安装与配置 Ngrok

3.1 下载 Ngrok

3.2 注册并获取 Authtoken

4. 在 PyCharm 中创建 Flask 项目

5. 运行本地 Flask 服务

6. 启动 Ngrok 隧道并获取公网地址

7. 完整示例代码汇总

8. 常见问题与排查

9. 结语


概要

本文提供一种通过Flask框架与Ngrok工具实现本地开发项目(基于PyCharm)公网访问的轻量化方案。通过整合Python后端服务配置、Ngrok隧道映射及安全认证流程,开发者可快速生成临时外网域名,实现远程调试与接口测试。本方案适用于原型开发、跨设备协作及API接口验证场景。


1. 环境与前置条件

  • 操作系统:Windows/macOS/Linux 均可。

  • Python 版本:≥3.6。3.11已测试有效。

  • PyCharm:已安装并能正常运行。

  • 网络:能访问 ngrok.com 及 Python 包索引。


2. 安装与配置 Flask

2.1 创建虚拟环境

python -m venv venv
source venv/bin/activate    # Linux/macOS
venv\Scripts\activate       # Windows

此步骤可隔离依赖,避免全局污染。

2.2 安装 Flask

pip install Flask

根据 Flask 官方文档,Flask 是轻量级微框架,可快速上手并支持生产部署ngrok


3. 安装与配置 Ngrok

3.1 下载 Ngrok

从官方页面下载对应平台的可执行文件并解压至任意目录(如 /usr/local/bin)Download ngrok

3.2 注册并获取 Authtoken

  1. 访问 https://ngrok.com 并注册免费账号。

  2. 登录控制面板,复制 Authtoken。

  3. 在终端中执行:

ngrok config add-authtoken <YOUR_AUTHTOKEN>

此命令会将 Authtoken 写入 ~/.ngrok2/ngrok.yml,用于后续隧道授权


4. 在 PyCharm 中创建 Flask 项目

  1. 新建项目:File → New Project → Pure Python,选择上述虚拟环境。

  2. 添加依赖:在 PyCharm 的 Terminal 中执行 pip install Flask

  3. 项目结构

my_flask_app/
│
├── app.py
├── requirements.txt
└── venv/
  1. requirements.txt 内容:

Flask

5. 运行本地 Flask 服务

app.py 中编写最简示例:

from flask import Flaskapp = Flask(__name__)@app.route('/')
def index():return 'Hello, Flask + Ngrok!'if __name__ == '__main__':app.run(port=5000)
  • port=5000 为 Flask 默认端口,可自定义。
     

    在Ngork界面运行以下命令,将本地5000端口映射至公网:

    bash

    ngrok http 5000

    Ngrok将生成Forwarding字段(如https://abcd.ngrok.io),即外网访问地址。

  • 通过 PyCharm Run 配置或在终端执行 python app.py 启动服务


6. 启动 Ngrok 隧道并获取公网地址

在新终端(仍在虚拟环境或可执行 ngrok)中运行:

ngrok http 5000
  • 此命令将在控制台输出两个公网地址(HTTP 和 HTTPS),形如 https://xxxxxx.ngrok.io

  • Ngrok 会将外部请求安全转发至本地 5000 端口


7. 完整示例代码汇总

from flask import Flaskapp = Flask(__name__)@app.route('/')
def index():return 'Hello, Flask + Ngrok!'if __name__ == '__main__':# 开发模式下可打开 debugapp.run(host='0.0.0.0', port=5000)
Flask>=2.0

8. 常见问题与排查

问题排查思路
Ngrok 报错 ERR_NGROK_6022重置 Authtoken:ngrok config add-authtoken ...;检查网络连通性
访问超时或 502确保 Flask 正在运行且端口一致;防火墙未阻挡;使用 app.run(host='0.0.0.0')
地址随机变更免费版地址非固定,可升级付费或在脚本中调用 Ngrok API 申请稳定子域

9. 结语

通过上述步骤,可在本地 PyCharm 环境中快速搭建 Flask 服务,并借助 Ngrok 实现临时公网访问,适用于演示、测试及远程调试场景。后续可集成 CI/CD、Docker 或自定义子域,进一步完善部署流程。
本思路实战项目记录:

搭建 Stable Diffusion 图像生成系统并通过 Ngrok 暴露到公网(实现本地系统网络访问)——项目记录 -CSDN博客

 扩散部署:
深度学习项目记录·Stable Diffusion从零搭建、复现笔记-CSDN博客
Stable Diffusion+Pyqt5: 实现图像生成与管理界面(带保存 + 历史记录 + 删除功能)——我的实验记录(结尾附系统效果图)-CSDN博客

SD + Contronet,扩散模型V1.5+约束条件后续优化:保存Canny边缘图,便于视觉理解——stable diffusion项目学习笔记-CSDN博客

相关文章:

基于Flask与Ngrok实现Pycharm本地项目公网访问:从零部署

目录 概要 1. 环境与前置条件 2. 安装与配置 Flask 2.1 创建虚拟环境 2.2 安装 Flask 3. 安装与配置 Ngrok 3.1 下载 Ngrok 3.2 注册并获取 Authtoken 4. 在 PyCharm 中创建 Flask 项目 5. 运行本地 Flask 服务 6. 启动 Ngrok 隧道并获取公网地址 7. 完整示例代码汇…...

Ai晚报20250423

Kortix 发布全球首个开源通用型 AI Agent——Suna&#xff0c;能像人类一样学习、推理和适应&#xff0c;通过自然对话帮助用户完成多种现实任务&#xff0c;支持浏览器自动化、文件管理等 20 个用户场景。腾讯混元大模型 AI 阅读助手“企鹅读伴”正式上线&#xff0c;为中小学…...

密码学货币混币器详解及python实现

目录 一、前言二、混币器概述2.1 混币器的工作原理2.2 关键特性三、数据生成与预处理四、系统架构与流程五、核心数学公式六、异步任务调度与 GPU 加速七、PyQt6 GUI 设计八、完整代码实现九、自查测试与总结十、展望摘要 本博客聚焦 “密码学货币混币器实现”,以 Python + P…...

HTMLCSS实现网页轮播图

网页中轮播图区域的实现与解析 在现代网页设计中&#xff0c;轮播图是一种常见且实用的元素&#xff0c;能够在有限的空间内展示多个内容&#xff0c;吸引用户的注意力。下面将对上述代码中轮播图区域的实现方式进行详细介绍。 一、HTML 结构 <div class"carousel-c…...

如何确定置信水平的最佳大小

在统计学中&#xff0c;置信水平的选择并不是一成不变的&#xff0c;而是根据具体的研究目的、样本量、数据类型以及行业标准等因素来确定的。然而&#xff0c;在大多数情况下&#xff0c;95%的置信水平是最常用的。 选择95%置信水平的原因 平衡可靠性与精确性&#xff1a; •…...

Java基础第21天-正则表达式

正则表达式是对字符串执行模式匹配的技术 如果想灵活的运用正则表达式&#xff0c;必须了解其中各种元字符的功能&#xff0c;元字符从功能上大致分为&#xff1a; 限定符选择匹配符分组组合和反向引用符特殊字符字符匹配符定位符 转义号\\:在我们使用正则表达式去检索某些特…...

Maven 项目中引入本地 JAR 包

在日常开发过程中&#xff0c;我们有时会遇到一些未上传到 Maven 中央仓库或公司私有仓库的 JAR 包&#xff0c;比如第三方提供的 SDK 或自己编译的库。这时候&#xff0c;我们就需要将这些 JAR 包手动引入到 Maven 项目中。本文将介绍两种常见方式&#xff1a;将 JAR 安装到本…...

CSGO 盲盒开箱系统技术实现深度解析

一、系统架构设计 &#xff08;一&#xff09;前后端分离架构 采用前后端分离模式&#xff0c;后端专注业务逻辑处理与数据管理&#xff0c;前端负责用户交互界面呈现。后端通过 RESTful API 与前端进行数据交互&#xff0c;这种架构能有效提高开发效率&#xff0c;便于团队分…...

JS通过GetCapabilities获取wms服务元数据信息并在SuperMap iClient3D for WebGL进行叠加显示

获取wms服务元数据信息并在三维webgl客户端进行叠加显示 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><tit…...

7N60-ASEMI无人机专用功率器件7N60

编辑&#xff1a;LL 7N60-ASEMI无人机专用功率器件7N60 型号&#xff1a;7N60 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220F 最大漏源电流&#xff1a;7A 漏源击穿电压&#xff1a;600V 批号&#xff1a;最新 RDS&#xff08;ON&#xff09;Max&#xff1a;1.20Ω …...

Redis日常学习(一)

我的Redis学习笔记&#xff1a;从命令行到性能调优 Redis Redis&#xff08;Remote Dictionary Server&#xff09;本质上是一个基于内存的键值存储系统. 安装配置Redis的过程非常简单&#xff1a; # Ubuntu/Debian安装Redis sudo apt-get update sudo apt-get install red…...

Pytorch图像数据转为Tensor张量

PyTorch的所有模型&#xff08;nn.Module&#xff09;都只接受Tensor格式的输入&#xff0c;所以我们在使用图像数据集时&#xff0c;必须将图像转换为Tensor格式。PyTorch提供了torchvision.transforms模块来处理图像数据集。torchvision.transforms模块提供了一些常用的图像预…...

Java 加密与解密:从算法到应用的全面解析

Java 加密与解密&#xff1a;从算法到应用的全面解析 一、加密与解密技术概述 在当今数字化时代&#xff0c;数据安全至关重要。Java 加密与解密技术作为保障数据安全的关键手段&#xff0c;被广泛应用于各个领域。 加密是将明文数据通过特定算法转换为密文&#xff0c;使得…...

Java基础系列-HashMap源码解析2-AVL树

文章目录 AVL树左旋右旋左旋右旋的4种情况LL 型RR 型LR 型RL 型 实际插入时怎么判断是那种类型&#xff1f;插入时注意事项删除节点 AVL树 为避免BST树退化成链表的极端情况&#xff0c; AVL 树应运而生。 平衡因子取值&#xff08;-1&#xff0c;0&#xff0c;1&#xff09;…...

蓝桥杯 19. 最大比例

最大比例 原题目链接 题目描述 X 星球的某个大奖赛设了 M 级奖励。每个级别的奖金是一个正整数。 并且&#xff0c;相邻两个级别间的比例是一个固定值&#xff0c;也就是说&#xff1a;所有级别的奖金构成一个等比数列。 例如&#xff1a; 奖金数列为 16, 24, 36, 54&…...

前端加密介绍与实战

前端数据加密 文章目录 前端数据加密前端数据加密介绍为什么需要前端数据加密&#xff1f;前端数据加密的常见方式前端数据加密的实现场景&#xff1a;加密用户密码并发送到后端步骤 1&#xff1a;安装加密库步骤 2&#xff1a;实现加密逻辑步骤 3&#xff1a;后端解密 实战总结…...

Zookeeper是什么?基于zookeeper实现分布式锁

zookeeper听的很多&#xff0c;但实际在应用开发中用的不错&#xff0c;主要是作为中间件配合使用的&#xff0c;例如&#xff1a;Kafka。 了解zk首先需要知道它的数据结构&#xff0c;可以想象为树、文件夹目录。每个节点有基本的信息&#xff0c;例如&#xff1a;创建时间、…...

Kafka 主题设计与数据接入机制

一、前言&#xff1a;万物皆流&#xff0c;Kafka 是入口 在构建实时数仓时&#xff0c;Kafka 既是 数据流动的起点&#xff0c;也是后续流处理系统&#xff08;如 Flink&#xff09;赖以为生的数据源。 但“消息进来了” ≠ “你就能处理好了”——不合理的 Topic 设计、接入方…...

gem5-gpu教程05 内存建模

memory-modeling|Details on how memory is modeled in gem5-gpu gem5-gpu’s Memory Simulation gem5-gpu在很大程度上避开了GPGPU-Sim的单独功能模拟,而是使用了gem5的执行中执行模型。因此,当执行存储/加载时,内存会被更新/读取。没有单独的功能路径。(顺便说一句,这…...

MySQL的日志--Redo Log【学习笔记】

MySQL的日志--Redo Log 知识来源&#xff1a; 《MySQL是怎样运行的》--- 小孩子4919 MySQL的事务四大特性之一就是持久性&#xff08;Durability&#xff09;。但是底层是如何实现的呢&#xff1f;这就需要我们的Redo Log&#xff08;重做日志&#xff09;闪亮登场了。它记录着…...

【AI应用】免费代码仓构建定制版本的ComfyUI应用镜像

免费代码仓构建定制版本的ComfyUI应用镜像 1 创建代码仓1.1 注册登陆1.2 创建代码仓1.5 安装中文语言包1.4 拉取ComfyUI官方代码2 配置参数和预装插件2.1 保留插件和模型的版本控制2.2 克隆插件到代码仓2.2.1 下载插件2.2.2 把插件设置本仓库的子模块管理3 定制Docker镜像3.1 创…...

MineWorld,微软研究院开源的实时交互式世界模型

MineWorld是什么 MineWorld是微软研究院开发并开源的一个基于《我的世界》&#xff08;Minecraft&#xff09;的实时互动世界模型。该模型采用了视觉-动作自回归Transformer架构&#xff0c;将游戏场景和玩家动作转化为离散的token ID&#xff0c;并通过下一个token的预测进行…...

被裁20240927 --- 视觉目标跟踪算法

永远都像初次见你那样使我心荡漾 参考文献目前主流的视觉目标跟踪算法一、传统跟踪算法1. 卡尔曼滤波&#xff08;Kalman Filter&#xff09;2. 相关滤波&#xff08;Correlation Filter&#xff0c;如KCF、MOSSE&#xff09;3. 均值漂移&#xff08;MeanShift/CamShift&#x…...

​​Agentic AI——当AI学会主动思考与决策,世界将如何被重塑?

一、引言&#xff1a;2025&#xff0c;Agentic AI的元年 “如果ChatGPT是AI的‘聊天时代’&#xff0c;那么2025年将开启AI的‘行动时代’。”——Global X Insights[1] 随着Agentic AI&#xff08;自主决策型人工智能&#xff09;的崛起&#xff0c;AI系统正从被动应答的“工具…...

Ollama API 应用指南

1. 基础信息 默认地址: http://localhost:11434/api数据格式: application/json支持方法: POST&#xff08;主要&#xff09;、GET&#xff08;部分接口&#xff09; 2. 模型管理 API (1) 列出本地模型 端点: GET /api/tags功能: 获取已下载的模型列表。示例:curl http://lo…...

PNG透明免抠设计素材大全26000+

在当今的数字设计领域&#xff0c;寻找高质量且易于使用的素材是每个设计师的日常需求。今天&#xff0c;我们将为大家介绍一个超全面的PNG透明免抠设计素材大全&#xff0c;涵盖多种风格、主题和应用场景&#xff0c;无论是平面设计、网页设计还是多媒体制作&#xff0c;都能轻…...

4.多表查询

SQL 多表查询&#xff1a;数据整合与分析的强大工具 文章目录 SQL 多表查询&#xff1a;数据整合与分析的强大工具一、 多表查询概述1.1 为什么需要多表查询1.2 多表查询的基本原理 二、 多表查询关系2.1 一对一关系&#xff08;One-to-One&#xff09;示例&#xff1a; 2.2 一…...

MCP 基于 TypeScript 的完整示例,包含stdio、sse多种用法和调试,对于构建自己的API工具链很有用

typescript-mcp-demo 这是一个基于 Model Context Protocol (MCP) 的 TypeScript 示例项目&#xff0c;展示了如何创建一个简单的 MCP 服务器&#xff0c;包含基本的工具&#xff08;tools&#xff09;和资源&#xff08;resources&#xff09;功能。 官网&#xff1a;https:…...

位运算知识

位运算是一种直接对整数在内存中的二进制位进行操作的运算方式。计算机中的整数是以二进制形式存储的&#xff0c;位运算通过操作这些二进制位来实现高效的计算。位运算通常比普通的算术运算更快&#xff0c;因为它直接作用于硬件层面。 以下是几种常见的位运算符及其功能&…...

mybatis高级查询:一对多配置,一次性查出主表和子表中的数据

一、MyBatis高级查询&#xff1a;一对多 MyBatis是一款强大的持久层框架&#xff0c;提供了多种方式来处理关联查询&#xff0c;其中包括一对一和一对多的情况。在本文中&#xff0c;我们将深入探讨一对多关联查询的实现方式。 在MyBatis中配置一对多关系通常涉及到associati…...