Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

730
Views
La aplicación Flask no iniciará 'ImportError: no se puede importar el nombre 'cached_property' de 'werkzeug' '

He estado trabajando en una aplicación Flask durante algunas semanas. Lo terminé hoy y fui a implementarlo... y ahora no se inicia.

No agregué ni eliminé ningún código, así que suponga que algo cambió en el proceso de implementación.

De todos modos, aquí está el error completo que se muestra en la terminal:

 Traceback (most recent call last): File "C:\Users\Kev\Documents\Projects\Docket\manage.py", line 5, in <module> from app import create_app, db File "C:\Users\Kev\Documents\Projects\Docket\app\__init__.py", line 21, in <module> from app.api import api, blueprint, limiter File "C:\Users\Kev\Documents\Projects\Docket\app\api\__init__.py", line 2, in <module> from flask_restplus import Api File "C:\Users\Kev\.virtualenvs\Docket-LasDxOWU\lib\site-packages\flask_restplus\__init_ _.py", line 4, in <module> from . import fields, reqparse, apidoc, inputs, cors File "C:\Users\Kev\.virtualenvs\Docket-LasDxOWU\lib\site-packages\flask_restplus\fields. py", line 17, in <module> from werkzeug import cached_property ImportError: cannot import name 'cached_property' from 'werkzeug' (C:\Users\Kev\.virtualen vs\Docket-LasDxOWU\lib\site-packages\werkzeug\__init__.py)

También aquí está el código en los tres archivos mencionados.

manage.py :

 from apscheduler.schedulers.background import BackgroundScheduler from flask_script import Manager from flask_migrate import Migrate, MigrateCommand from app import create_app, db app = create_app() app.app_context().push() manager = Manager(app) migrate = Migrate(app, db) manager.add_command('db', MigrateCommand) from app.routes import * from app.models import * def clear_data(): with app.app_context(): db.session.query(User).delete() db.session.query(Todo).delete() db.session.commit() print("Deleted table rows!") @manager.command def run(): scheduler = BackgroundScheduler() scheduler.add_job(clear_data, trigger='interval', minutes=15) scheduler.start() app.run(debug=True) if __name__ == '__main__': clear_data() manager.run()

app/__init__.py :

 from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_login import LoginManager from config import Config db = SQLAlchemy() login = LoginManager() def create_app(): app = Flask(__name__) app.config.from_object(Config) db.init_app(app) login.init_app(app) login.login_view = 'login' from app.api import api, blueprint, limiter from app.api.endpoints import users, todos, register from app.api.endpoints.todos import TodosNS from app.api.endpoints.users import UserNS from app.api.endpoints.register import RegisterNS api.init_app(app) app.register_blueprint(blueprint) limiter.init_app(app) api.add_namespace(TodosNS) api.add_namespace(UserNS) api.add_namespace(RegisterNS) return app

api/__init__.py :

 from logging import StreamHandler from flask_restplus import Api from flask import Blueprint from flask_limiter import Limiter from flask_limiter.util import get_remote_address blueprint = Blueprint('api', __name__, url_prefix='/api') limiter = Limiter(key_func=get_remote_address) limiter.logger.addHandler(StreamHandler()) api = Api(blueprint, doc='/documentation', version='1.0', title='Docket API', description='API for Docket. Create users and todo items through a REST API.\n' 'First of all, begin by registering a new user via the registration form in the web interface.\n' 'Or via a `POST` request to the `/Register/` end point', decorators=[limiter.limit("50/day", error_message="API request limit has been reached (50 per day)")])

Intenté reinstalar el flask y flask_restplus pero no tuve suerte.

over 4 years ago · Santiago Trujillo
5 answers
Answer question

0

Bajar de categoría a Werkzeug==0.16.1 resuelve esto

consulte https://github.com/noirbizarre/flask-restplus/issues/777#issuecomment-583235327

EDITAR

Quería agregar que una solución permanente (a largo plazo) sería mudarse a flask_restx ya que el flask-restplus ya no se mantiene.

Vea cómo migrar desde matraz-restplus

over 4 years ago · Santiago Trujillo Report

0

Tratar:

 from werkzeug.utils import cached_property

https://werkzeug.palletsprojects.com/en/1.0.x/utils/

over 4 years ago · Santiago Trujillo Report

0

La respuesta adecuada para mayo de 2020: el matraz-restplus está muerto, muévase al matraz-restx .

De noirbizarre/flask-restplus#778 (comentario) :

El trabajo de Flass-restplus ha sido descontinuado debido a que los mantenedores no tienen claves pypi. Vea la caída en el reemplazo, matraz-restx. Es una bifurcación oficial del equipo de mantenimiento. Ya hemos solucionado el problema allí.

De noirbizarre/flask-restplus#777 (comentario) :

No. Flask-restplus ya no se mantiene. Los antiguos mantenedores no tienen privilegios para empujar a pypi, y después de muchos meses de intentarlo, bifurcamos el proyecto. Echa un vistazo a matraz-restx. Es un reemplazo directo y estamos planificando, diseñando y haciendo correcciones... por ejemplo, ya hemos parcheado para Werkzeug.

Por lo tanto, la solución real es pasarse a Flass-restx en lugar de anclarse a una versión anterior de Werkzeug.

over 4 years ago · Santiago Trujillo Report

0

Rebajar Werkzeug a 0.16.1

 pip3 install --upgrade Werkzeug==0.16.1

Si hace una pip3 list , puede ver algo como esto:

 Flask 1.1.2 Werkzeug 0.16.1
over 4 years ago · Santiago Trujillo Report

0

Esto puede ser demasiado extraño para que le suceda a alguien más, pero... Verifique sus paquetes realmente importados. El mío se veía así:

ingrese la descripción de la imagen aquí

Claramente, algo falló en la importación aquí... eliminó y volvió a agregar el paquete "werkzeug" correcto y "funcionó" (resulta que todavía necesito implementar una de las otras soluciones ofrecidas a esta pregunta... :-( )

Ah, pero usted pregunta: "¿Cómo elimino un paquete corrupto como este? ¡La GUI no me lo permite!". No temas, eso también me pasó a mí. En Pycharm, encuentre la ubicación del archivo del paquete pasando el cursor sobre el nombre del paquete en el menú de configuración, vaya allí en el explorador de archivos y elimine la carpeta y cualquier otra cosa que se le parezca. Luego reinstale el paquete con la GUI.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!