Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

277
Visualizações
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 Respostas
Responde à pergunta

0

Tratar:

 from werkzeug.utils import cached_property

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

over 4 years ago · Santiago Trujillo Relatório

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 Relatório

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 impulsar 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 arreglos... por ejemplo, ya parcheamos para Werkzeug.

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

over 4 years ago · Santiago Trujillo Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda