--Flask-RESTPlus semble arrêter la maintenance, et si vous continuez à l'utiliser, sa fourche, Flask-RESTX, a l'air bien.
flask_restplus
par flask_restx
fonctionnait.Je développais un petit serveur d'API Web dans Flask et documentais les spécifications de l'API à l'aide de Flask-RESTPlus. Le développement du côté Flask a été calme et je n'y ai pas touché depuis un mois environ, mais une erreur s'est produite lorsque j'ai essayé de vérifier l'opération avec une légère modification.
Quand je vérifie le journal, il y a de la mousse dans le paquet werkzeug. Le niveau n'est pas proche du point de correction.
../../../../.pyenv/versions/3.6.9/envs/testenv/lib/python3.6/site-packages/flask_restplus/fields.py:17: in <module>
from werkzeug import cached_property
E ImportError: cannot import name 'cached_property'
Certes, au cours du dernier mois environ, j'avais supprimé le virtualenv à portée de main pour diverses raisons, et je l'ai recréé au moment de cette correction. J'ai réinséré le package dans le fichier requirements.txt de pip, mais quelque chose peut se produire en raison des dépendances de version.
Si vous google, le problème de Github est un succès. Ça ressemble à ça. flask-restplus is broken by Werkzeug 1.0.0 #777
Cached_property
est passé de sous werkzeug
à sous werkzeug.utils
lorsque Werkzeug est devenu la version 1.0.0 début février 2020. Il semble que l'erreur ci-dessus se soit produite parce que flask_restplus
avait un endroit où cached_property
a été importé et utilisé.
Les dépendances de paquet de Flask sont écrites comme Werkzeug> = 0.15
, donc l'installation des modules pip à partir de zéro sera affectée par les mises à jour majeures de Werkzeug.
En regardant à nouveau README.md de la page Flask-RESTPlus Github, la description suivante est au début. Il a été ajouté au début de janvier 2020.
IMPORTANT NOTICE:
This project has been forked to
Flask-RESTX <https://github.com/python-restx/flask-restx>
_ and will be maintained by by thepython-restx <https://github.com/python-restx>
_ organization. Flask-RESTPlus should be considered unmaintained.
Flask-RESTPlus ne sera plus maintenu, le fork Flask-RESTX sera maintenu à l'avenir. Et cela.
Ce serait bien d'abaisser manuellement la version de Werkzeug, mais je pensais que le développement continuerait pendant un certain temps, alors j'ai décidé d'essayer Flask-RESTX. En regardant la page Flask-RESTX, l'utilisation semble être presque la même que Flask-RESTPlus. J'ai donc essayé de le déplacer par simple remplacement pour le moment. Le code ressemble à ceci.
flask_restplus
from flask_restplus import Namespace, fields, Resource
from flask_restplus.namespace import HTTPStatus
flask_restx
from flask_restx import Namespace, fields, Resource
from flask_restx.namespace import HTTPStatus
Avec cela seul, il a fonctionné sans générer d'erreur pour le moment. Flask-RESTX utilise la dernière version de PyPI, 0.1.1. Cela a une limitation de werkzeug (<= 0.16.1), il semble donc que le problème sera résolu en réinstallant le paquet pip.
Après avoir vérifié le dernier code sur Github, il semble que Werkzeug 1.0.0 est d'accord avec la méthode d'écriture d'importation modifiée. Nous espérons que PyPI reflétera cette version à l'avenir.
J'ai changé le paramètre de config sur la valeur par défaut ou un peu, mais cela ne reflétait pas non plus le paramètre sauf si j'ai changé le nom de la clé de dict. Cela change aussi simplement RESTPLUS_
en RESTX_
, il est donc utile d'être mécanique.
flask_restplus
app.config['RESTPLUS_MASK_SWAGGER'] = False
app.config['RESTPLUS_JSON'] = {'ensure_ascii': False}
flask_restx
app.config['RESTX_MASK_SWAGGER'] = False
app.config['RESTX_JSON'] = {'ensure_ascii': False}
Recommended Posts