Foros Python

Versión completa: Ayuda con Flask
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
¡Hola, buenas! estoy desarrollando una aplicación web con Python utilizando Flask, pero al ejecutar el comando: 
Código:
python app.py
en la terminal de macOS obtengo el siguiente error: 

ImportError: cannot import name '_request_ctx_stack' from 'flask'

la idea es que pueda ejecutar mi aplicación con ese comando y obtener el http://127.0.0.1:5000 o http://localhost:5000 para visualizar en el navegador la página que estoy creando. 

Ya intenté actualizar pip usando: 

Código:
pip install --upgrade pip

También he podido comprobar la versión de flask con: 

Código:
pip show flask

que en este caso es la 3.0.1

También intenté con un entorno virtual nuevo e incluso desinstalar e instalar flask pero obtuve el mismo resultado. 

Cabe mencionar que tengo instalado Python en su versión 3.12.1

En el archivo "app.py" en teoría tengo las importaciones correctas: 

Código:
from flask import Flask, request, jsonify, render_template
from flaskext.mysql import MySQL

También comprobé que "Flask-MySQL" esté instalado, y sí lo está en su versión 1.5.2

La estructura básica del código Python es como sigue: 

Código:
from flask import Flask, request, jsonify, render_template
from flaskext.mysql import MySQL

app = Flask(__name__)

@app.route('/')
def index():
return render_template('Form.html')


app.config['MYSQL_DATABASE_HOST'] = 'localhost' 
app.config['MYSQL_DATABASE_USER'] = 'root'
app.config['MYSQL_DATABASE_PASSWORD'] = ' '
app.config['MYSQL_DATABASE_DB'] = 'bd_datos'

mysql = MySQL(app)

@app.route('/submit-form-datos', methods=['POST'])
def submit_form_datos():

    # código para manejar el envío del formulario
    # ...

if __name__ == "__main__":
    app.run(debug=True)

¿A qué se puede deber este error? 
Por lo que he podido investigar en la internet: '_app_ctx_stack' lo quitaron de flask en la version Flask 2.3.

Mi sospecha es que una de las librerias que estas usando esta llamando a Flask para importar eso.

El error completo debe de decirte que libreria esta tratando de importar ese codigo que no existe en Flask.

Pude replicar to error. El problema es la libreria flask-mysql:

During handling of the above exception, another exception occurred:


Cita:Traceback (most recent call last):
  File "/media/zensei/Extreme SSD/Projects/Python/flask_blog/.venv/lib/python3.9/site-packages/flask/cli.py", line 247, in locate_app
    __import__(module_name)
  File "/media/zensei/Extreme SSD/Projects/Python/flask_blog/app.py", line 4, in <module>
    from flaskext.mysql import MySQL
  File "/media/zensei/Extreme SSD/Projects/Python/flask_blog/.venv/lib/python3.9/site-packages/flaskext/mysql.py", line 7, in <module>
    from flask import _request_ctx_stack as _ctx_stack
ImportError: cannot import name '_request_ctx_stack' from 'flask' (/media/zensei/Extreme SSD/Projects/Python/flask_blog/.venv/lib/python3.9/site-packages/flask/__init__.py)