使用flask_ngrok运行Flask应用时报ngrok文件不存在错误如何解决?
修复方案
错误原因
flask_ngrok 包已停止维护,其内置的自动下载 ngrok 二进制文件到临时目录的逻辑失效,因此抛出找不到指定路径下 ngrok 可执行文件的错误。你本地命令行可正常运行 ngrok,说明系统已全局安装 ngrok,只需调整调用逻辑适配本地安装的 ngrok 即可。
修复方法
方案1:使用官方维护的 pyngrok 替换 flask_ngrok(推荐,稳定性更高)
- 先安装依赖:
pip install pyngrok - 替换原有代码逻辑,示例如下:
from flask import Flask from pyngrok import ngrok app = Flask(__name__) @app.route('/') def index(): return "服务正常运行" if __name__ == '__main__': # 启动指向Flask默认5000端口的ngrok公网隧道 tunnel = ngrok.connect(5000) print(f"公网访问地址:{tunnel.public_url}") # 启动Flask服务 app.run(port=5000)
如果之前已经在命令行执行过ngrok config add-authtoken 你的token完成认证,pyngrok会自动读取本地配置,无需额外设置。
方案2:兼容原有 flask_ngrok 代码逻辑
如果不想修改原有大量使用run_with_ngrok的代码,可以手动指定本地ngrok的可执行文件路径:
- 命令行执行
which ngrok(Mac/Linux)或where ngrok(Windows),获取本地ngrok的安装路径,比如返回/usr/local/bin/ngrok - 在调用
run_with_ngrok前指定路径,示例如下:
from flask import Flask from flask_ngrok import run_with_ngrok import flask_ngrok # 替换为上一步获取的本地ngrok路径 flask_ngrok.NGROK_PATH = "/usr/local/bin/ngrok" app = Flask(__name__) run_with_ngrok(app) @app.route('/') def index(): return "服务正常运行" if __name__ == '__main__': app.run()
内容的提问来源于stack exchange,提问作者DevDog
相关产品推荐
相关产品推荐

