[PYTHON] Von Flask-RESTPlus nach Flask-RESTX migriert

Fazit

--Flask-RESTPlus scheint die Wartung zu beenden, und wenn Sie es weiterhin verwenden, sieht die Gabel Flask-RESTX gut aus.

Auslösen

Ich habe einen kleinen Web-API-Server in Flask entwickelt und die API-Spezifikationen mit Flask-RESTPlus dokumentiert. Die Entwicklung auf der Flaschenseite war ruhig und ich habe sie im letzten Monat oder so nicht berührt, aber ein Fehler trat auf, als ich versuchte, den Betrieb mit einer geringfügigen Änderung zu überprüfen.

Wenn ich das Protokoll überprüfe, ist es Moos im Werkzeugpaket. Der Pegel befindet sich nicht in der Nähe des Korrekturpunkts.

../../../../.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'

Sicherlich hatte ich im letzten Monat oder so die vorliegende virtuelle Umgebung aus verschiedenen Gründen gelöscht und zum Zeitpunkt dieser Korrektur neu erstellt. Ich packe die Datei "anforderungen.txt "von pip neu, aber aufgrund von Versionsabhängigkeiten kann etwas passieren.

Umfrage

Ursache

Wenn Sie googeln, ist das Problem von Github ein Hit. Es sieht aus wie das. flask-restplus is broken by Werkzeug 1.0.0 #777

cached_property wurde von under werkzeug nach under werkzeug.utils verschoben, als Werkzeug Anfang Februar 2020 Version 1.0.0 wurde. Es scheint, dass der obige Fehler aufgetreten ist, weil flask_restplus einen Ort hatte, an dem cached_property importiert und verwendet wurde. Die Paketabhängigkeiten von Flask werden als "Werkzeug> = 0.15" geschrieben, sodass die Installation von Pip-Modulen von Grund auf von größeren Werkzeug-Upgrades betroffen ist.

Kennen Sie Flask-RESTX

Wenn Sie sich noch einmal README.md von Flask-RESTPlus Github-Seite ansehen, steht die folgende Beschreibung am Anfang. Es wurde Anfang Januar 2020 hinzugefügt.

IMPORTANT NOTICE:

This project has been forked to Flask-RESTX <https://github.com/python-restx/flask-restx>_ and will be maintained by by the python-restx <https://github.com/python-restx>_ organization. Flask-RESTPlus should be considered unmaintained.

Flask-RESTPlus wird nicht mehr gewartet, Gabel Flask-RESTX wird in Zukunft gewartet. Und das.

Verwenden von Flask-RESTX

Versuchen Sie es mit

Es wäre schön, die Version von Werkzeug manuell zu senken, aber ich dachte, dass die Entwicklung noch eine Weile andauern würde, also entschied ich mich, Flask-RESTX auszuprobieren. In Bezug auf die Flask-RESTX-Seite scheint die Verwendung fast dieselbe zu sein wie bei Flask-RESTPlus. Also habe ich versucht, es vorerst durch einfachen Ersatz zu bewegen. Der Code sieht so aus.

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

Damit allein hat es funktioniert, ohne vorerst einen Fehler auszugeben. Flask-RESTX verwendet die neueste Version von PyPI, 0.1.1. Dies hat eine Einschränkung von werkzeug (<= 0.16.1), so dass es den Anschein hat, dass das Problem durch eine Neuinstallation des pip-Pakets gelöst wird.

Nach dem Überprüfen des neuesten Codes auf Github scheint Werkzeug 1.0.0 mit der geänderten Importschreibmethode in Ordnung zu sein. Wir hoffen, dass PyPI diese Version in Zukunft widerspiegeln wird.

Eine etwas detailliertere Bestätigung

Ich habe die Einstellung in der Konfiguration auf die Standardeinstellung oder ein wenig geändert, aber dies spiegelte auch die Einstellung nicht wider, es sei denn, ich habe den Schlüsselnamen von dict geändert. Dies ändert auch nur "RESTPLUS_" in "RESTX_", daher ist es hilfreich, mechanisch zu sein.

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

Von Flask-RESTPlus nach Flask-RESTX migriert
Summe von 1 bis 10
Änderungen von Python 2 zu Python 3.0
Von der Bearbeitung bis zur Ausführung
Flirte von PHP nach Python
Anaconda aktualisiert von 4.2.0 auf 4.3.0 (python3.5 aktualisiert auf python3.6)
Aktualisieren Sie python-social-auth von 0.1.x auf 0.2.x.
Migrieren Sie von require.txt zu pipenv
Wechseln Sie von Python2.7 zu Python3.6 (centos7)
Stellen Sie von Python aus eine Verbindung zu SQLite her
Rufen Sie Matlab von Python zur Optimierung auf
Von der Installation von Elasticsearch bis zur Dateneingabe
vtkXMLUnstructuredGridReader Zusammenfassung (von Zeit zu Zeit aktualisiert)
vtkOpenFOAMReader-Zusammenfassung (von Zeit zu Zeit aktualisiert)
Wie man SWIG von waf benutzt
Migration von direct_to_template zu TemplateView nicht möglich
Ingenieur-Wortbuch (von Zeit zu Zeit aktualisiert)
Konvertierung von pdf nach txt 1 [pdfminer]
Programmierung aus Büchern gelernt 10. Mai
Post von Python auf Facebook Timeline
[Lambda] [Python] Von Lambda auf Twitter posten!
Ausgabe von Raspberry Pi an Line
[Einführung] Von der Installation von Kibana bis zum Start
Konvertierung von pdf nach txt 2 [pyocr]
Stellen Sie von Python aus eine Verbindung zur utf8mb4-Datenbank her
OpenMPI-Installation Vom Download bis zum Bestehen
Tensorflow-Memo [von Zeit zu Zeit aktualisiert]
Python (vom ersten Mal bis zur Ausführung)
Poste ein Bild von Python auf Tumblr
Senden Sie Befehle von Atom an Maya
So starten Sie den Explorer über die WSL
Programmierung aus Büchern gelernt 7. Mai
Ab Ubuntu 20.04 Einführung in die Umgebungskonstruktion
SSH-Verbindung von Windows zu GCP
So greifen Sie über Python auf Wikipedia zu
Python, um von einer anderen Sprache zu wechseln
So konvertieren Sie von .mgz nach .nii.gz
Migrieren Sie von VS Code zu PyCharm
pynq-z1 Vom Kauf bis zur Funktionsprüfung
Hat sich nicht von Python 2 auf 3 geändert
Aktualisieren Sie Mac Python von 2 auf 3