Fouten opsporen in scorescripts met Azure Machine Learning-deductie-HTTP-server
De HTTP-server van Azure Machine Learning-deductie is een Python-pakket dat uw scorefunctie beschikbaar maakt als een HTTP-eindpunt en de Flask-servercode en afhankelijkheden verpakt in een enkel pakket. De server is opgenomen in de vooraf gemaakte Docker-installatiekopieën voor deductie die worden gebruikt bij het implementeren van een model met Azure Machine Learning. Met behulp van het pakket kunt u het model lokaal implementeren voor productie en eenvoudig uw scorescript (invoerscript) valideren in een lokale ontwikkelomgeving. Als er een probleem is met het scorescript, retourneert de server een fout en de locatie van de fout.
De server kan ook worden gebruikt om validatiepoorten te maken in een pijplijn voor continue integratie en implementatie. U kunt bijvoorbeeld de server starten met het kandidaatscript en de testsuite uitvoeren op het lokale eindpunt.
Dit artikel ondersteunt ontwikkelaars die de deductieserver willen gebruiken om lokaal fouten op te sporen en beschrijft hoe u de deductieserver gebruikt met online-eindpunten in Windows.
Vereisten
Als u de HTTP-server voor deductie van Azure Machine Learning wilt gebruiken voor lokale foutopsporing, moet uw configuratie de volgende onderdelen bevatten:
- Python 3.8 of hoger
- Anaconda
De AZURE Machine Learning-deductie-HTTP-server wordt uitgevoerd op Windows- en Linux-besturingssystemen.
Opties voor lokale foutopsporing voor online-eindpunten verkennen
Door lokaal fouten in eindpunten op te sporen voordat u in de cloud implementeert, kunt u eerder fouten in uw code en configuratie opsporen. Als u lokaal fouten wilt opsporen in eindpunten, hebt u verschillende opties, waaronder:
- De HTTP-server voor deductie van Azure Machine Learning
- Een lokaal eindpunt
In dit artikel wordt beschreven hoe u kunt werken met de HTTP-server voor Azure Machine Learning-deductie in Windows.
De volgende tabel bevat een overzicht van scenario's om u te helpen de beste optie te kiezen:
Scenario | HTTP-server voor deductie | Lokaal eindpunt |
---|---|---|
Lokale Python-omgeving bijwerken zonder opnieuw opbouwen van Docker-installatiekopieën | Ja | Nr. |
Scorescript bijwerken | Ja | Ja |
Implementatieconfiguraties bijwerken (implementatie, omgeving, code, model) | Nr. | Ja |
Foutopsporingsprogramma van Microsoft Visual Studio Code (VS Code) integreren | Ja | Ja |
Wanneer u de HTTP-deductieserver lokaal uitvoert, kunt u zich richten op het opsporen van fouten in uw scorescript zonder dat u zich zorgen hoeft te maken over implementatiecontainerconfiguraties.
Azureml-inference-server-http-pakket installeren
Voer de volgende opdracht uit om het azureml-inference-server-http
pakket te installeren:
python -m pip install azureml-inference-server-http
Notitie
Installeer de HTTP-deductieserver in een virtuele omgeving om pakketconflicten te voorkomen.
U kunt de pip install virtualenv
opdracht gebruiken om virtuele omgevingen in te schakelen voor uw configuratie.
Fouten opsporen in uw scorescript lokaal
Als u lokaal fouten wilt opsporen in uw scorescript, hebt u verschillende opties voor het testen van het servergedrag:
- Probeer een dummy-scorescript.
- Gebruik Visual Studio Code om fouten op te sporen met het pakket azureml-inference-server-http .
- Voer een daadwerkelijk scorescript, modelbestand en omgevingsbestand uit vanuit onze voorbeeldenopslagplaats.
Servergedrag testen met dummy scorescript
Maak een map met de naam server_quickstart om uw bestanden op te slaan:
mkdir server_quickstart cd server_quickstart
Als u pakketconflicten wilt voorkomen, maakt u een virtuele omgeving, zoals myenv, en activeert u deze:
python -m virtualenv myenv
Notitie
Voer in Linux de
source myenv/bin/activate
opdracht uit om de virtuele omgeving te activeren.Nadat u de server hebt getest, kunt u de
deactivate
opdracht uitvoeren om de virtuele Python-omgeving te deactiveren.Installeer het
azureml-inference-server-http
pakket vanuit de pypi-feed :python -m pip install azureml-inference-server-http
Maak het invoerscript. In het volgende voorbeeld wordt een basisinvoerscript gemaakt en opgeslagen in een bestand met de naam score.py:
echo -e "import time def init(): \n\t time.sleep(1) \n\n def run(input_data): \n\t return {"message":"Hello, World!"}" > score.py
Start de server met de
azmlinfsrv
opdracht en stel het score.py-bestand in als het invoerscript:azmlinfsrv --entry_script score.py
Notitie
De server wordt gehost op 0.0.0.0.0, wat betekent dat deze luistert naar alle IP-adressen van de hostingcomputer.
Verzend een scoreaanvraag naar de server met behulp van het
curl
hulpprogramma:curl -p 127.0.0.1:5001/score
De server plaatst het volgende antwoord:
{"message": "Hello, World!"}
Nadat u de server hebt getest, selecteert u Ctrl+ C om de server te beëindigen.
U kunt nu het scorescriptbestand (score.py) wijzigen en uw wijzigingen testen door de server opnieuw uit te voeren met de azmlinfsrv --entry_script score.py
opdracht.
Integreren met Visual Studio Code
Als u VS Code en de Python-extensie wilt gebruiken voor foutopsporing met het pakket azureml-inference-server-http , kunt u de modi Launch en Attach gebruiken.
Voor de startmodus stelt u het launch.json-bestand in VS Code in en start u de HTTP-server van Azure Machine Learning-deductie in VS Code:
Start VS Code en open de map met het script (score.py).
Voeg de volgende configuratie toe aan het launch.json-bestand voor die werkruimte in VS Code:
launch.json
{ "version": "0.2.0", "configurations": [ { "name": "Debug score.py", "type": "python", "request": "launch", "module": "azureml_inference_server_http.amlserver", "args": [ "--entry_script", "score.py" ] } ] }
Start de foutopsporingssessie in VS Code door Foutopsporing> uitvoeren te selecteren of gebruik de sneltoets F5.
Voor de bijlagemodus start u de HTTP-server van Deductie van Azure Machine Learning in een opdrachtvenster en gebruikt u VS Code met de Python-extensie om aan het proces te koppelen:
Notitie
Voor Linux installeert u eerst het
gdb
pakket door de opdracht uit tesudo apt-get install -y gdb
voeren.Voeg de volgende configuratie toe aan het launch.json-bestand voor die werkruimte in VS Code:
launch.json
{ "version": "0.2.0", "configurations": [ { "name": "Python: Attach using Process Id", "type": "python", "request": "attach", "processId": "${command:pickProcess}", "justMyCode": true } ] }
Start in een opdrachtvenster de deductie-HTTP-server met behulp van de
azmlinfsrv --entry_script score.py
opdracht.Start de foutopsporingssessie in VS Code:
>Selecteer Foutopsporing uitvoeren of gebruik de sneltoets F5.
Bekijk in het opdrachtvenster de logboeken van de deductieserver en zoek de proces-id van de
azmlinfsrv
opdracht (niet degunicorn
):Voer in het FOUTopsporingsprogramma van VS Code de proces-id van de
azmlinfsrv
opdracht in.Als u de VS Code-proceskiezer niet ziet, kunt u de proces-id handmatig invoeren in het
processId
veld van het launch.json-bestand voor die werkruimte.
Voor beide modi kunt u onderbrekingspunten instellen en stapsgewijs fouten in het script opsporen.
Een end-to-end-voorbeeld gebruiken
Met de volgende procedure wordt de server lokaal uitgevoerd met voorbeeldbestanden (scorescript, modelbestand en omgeving) vanuit de Azure Machine Learning-voorbeeldopslagplaats. Zie Een machine learning-model implementeren en beoordelen met behulp van een online-eindpunt voor meer voorbeelden van het gebruik van deze voorbeeldbestanden.
Kloon de voorbeeldopslagplaats:
git clone --depth 1 https://github.com/Azure/azureml-examples cd azureml-examples/cli/endpoints/online/model-1/
Een virtuele omgeving maken en activeren met conda:
In dit voorbeeld wordt het
azureml-inference-server-http
pakket automatisch geïnstalleerd. Het pakket is opgenomen als een afhankelijke bibliotheek van hetazureml-defaults
pakket in het bestand conda.yml :# Create the environment from the YAML file conda env create --name model-env -f ./environment/conda.yml # Activate the new environment conda activate model-env
Controleer uw scorescript:
onlinescoring/score.py
import os import logging import json import numpy import joblib def init(): """ This function is called when the container is initialized/started, typically after create/update of the deployment. You can write the logic here to perform init operations like caching the model in memory """ global model # AZUREML_MODEL_DIR is an environment variable created during deployment. # It is the path to the model folder (./azureml-models/$MODEL_NAME/$VERSION) # Please provide your model's folder name if there is one model_path = os.path.join( os.getenv("AZUREML_MODEL_DIR"), "model/sklearn_regression_model.pkl" ) # deserialize the model file back into a sklearn model model = joblib.load(model_path) logging.info("Init complete") def run(raw_data): """ This function is called for every invocation of the endpoint to perform the actual scoring/prediction. In the example we extract the data from the json input and call the scikit-learn model's predict() method and return the result back """ logging.info("model 1: request received") data = json.loads(raw_data)["data"] data = numpy.array(data) result = model.predict(data) logging.info("Request processed") return result.tolist()
Voer de HTTP-deductieserver uit door het scorescript en modelbestand op te geven:
De modelmap die in de
model_dir
parameter is opgegeven, wordt gedefinieerd met behulp van deAZUREML_MODEL_DIR
variabele en opgehaald in het scorescript.In dit geval geeft u de huidige map op./ omdat de submap is opgegeven in het scorescript als model/sklearn_regression_model.pkl.
azmlinfsrv --entry_script ./onlinescoring/score.py --model_dir ./
Wanneer de server wordt gestart en het scorescript is aangeroepen, wordt het voorbeeld van het opstartlogboek geopend. Anders worden in het logboek foutberichten weergegeven.
Test het scorescript met voorbeeldgegevens:
Open een ander opdrachtvenster en ga naar dezelfde werkmap waarin u de opdracht uitvoert.
Gebruik het
curl
hulpprogramma om een voorbeeldaanvraag naar de server te verzenden en een scoreresultaat te ontvangen:curl --request POST "127.0.0.1:5001/score" --header "Content-Type:application/json" --data @sample-request.json
Wanneer er geen problemen zijn met het scorescript, retourneert het script het scoreresultaat. Als er problemen optreden, kunt u proberen het scorescript bij te werken en de server opnieuw te starten om het bijgewerkte script te testen.
Serverroutes controleren
De deductie HTTP-server luistert standaard op poort 5001 op de volgende routes:
Naam | Route |
---|---|
Levenheidstest | 127.0.0.1:5001/ |
Score | 127.0.0.1:5001/score |
OpenAPI (swagger) | 127.0.0.1:5001/swagger.json |
Serverparameters controleren
De deductie-HTTP-server accepteert de volgende parameters:
Parameter | Vereist | Default | Omschrijving |
---|---|---|---|
entry_script |
Waar | N.v.t. | Identificeert het relatieve of absolute pad naar het scorescript. |
model_dir |
Onwaar | N.v.t. | Identificeert het relatieve of absolute pad naar de map die het model bevat dat wordt gebruikt voor deductie. |
port |
Onwaar | 5001 | Hiermee geeft u de serverpoort van de server. |
worker_count |
Onwaar | 1 | Biedt het aantal werkrolthreads voor het verwerken van gelijktijdige aanvragen. |
appinsights_instrumentation_key |
Onwaar | N.v.t. | Biedt de instrumentatiesleutel voor de application insights waar de logboeken worden gepubliceerd. |
access_control_allow_origins |
Onwaar | N.v.t. | Hiermee schakelt u CORS in voor de opgegeven oorsprongen, waarbij meerdere oorsprongen worden gescheiden door een komma (,), zoals microsoft.com, bing.com . |
Verwerking van serveraanvragen verkennen
In de volgende stappen ziet u hoe de HTTP-server voor azure Machine Learning-deductie (azmlinfsrv
) binnenkomende aanvragen verwerkt:
Een Python CLI-wrapper bevindt zich rond de netwerkstack van de server en wordt gebruikt om de server te starten.
Een client verzendt een aanvraag naar de server.
De server verzendt de aanvraag via de WSGI-server (Web Server Gateway Interface), die de aanvraag verzendt naar een Flask-werktoepassing:
- Windows: serveerress
- Linux: gunicorn
De Flask-werkrol-app verwerkt de aanvraag, waaronder het laden van het invoerscript en eventuele afhankelijkheden.
Uw invoerscript ontvangt de aanvraag. Het invoerscript maakt een deductieaanroep naar het geladen model en retourneert een antwoord:
Serverlogboeken verkennen
Er zijn twee manieren om logboekgegevens te verkrijgen voor de HTTP-servertest voor deductie:
- Voer het
azureml-inference-server-http
pakket lokaal uit en bekijk de logboekuitvoer. - Gebruik online-eindpunten en bekijk de containerlogboeken. Het logboek voor de deductieserver heeft de naam Azure Machine Learning Inferencing HTTP-serverversie><.
Notitie
De indeling voor logboekregistratie is gewijzigd sinds versie 0.8.0. Als uw logboek een andere stijl gebruikt dan verwacht, werkt u het azureml-inference-server-http
pakket bij naar de nieuwste versie.
Opstartlogboeken weergeven
Wanneer de server wordt gestart, worden in de logboeken de eerste serverinstellingen als volgt weergegeven:
Azure Machine Learning Inferencing HTTP server <version>
Server Settings
---------------
Entry Script Name: <entry_script>
Model Directory: <model_dir>
Worker Count: <worker_count>
Worker Timeout (seconds): None
Server Port: <port>
Application Insights Enabled: false
Application Insights Key: <appinsights_instrumentation_key>
Inferencing HTTP server version: azmlinfsrv/<version>
CORS for the specified origins: <access_control_allow_origins>
Server Routes
---------------
Liveness Probe: GET 127.0.0.1:<port>/
Score: POST 127.0.0.1:<port>/score
<logs>
Wanneer u bijvoorbeeld de server start door het end-to-end-voorbeeld te volgen, wordt het logboek als volgt weergegeven:
Azure Machine Learning Inferencing HTTP server v0.8.0
Server Settings
---------------
Entry Script Name: /home/user-name/azureml-examples/cli/endpoints/online/model-1/onlinescoring/score.py
Model Directory: ./
Worker Count: 1
Worker Timeout (seconds): None
Server Port: 5001
Application Insights Enabled: false
Application Insights Key: None
Inferencing HTTP server version: azmlinfsrv/0.8.0
CORS for the specified origins: None
Server Routes
---------------
Liveness Probe: GET 127.0.0.1:5001/
Score: POST 127.0.0.1:5001/score
2022-12-24 07:37:53,318 I [32726] gunicorn.error - Starting gunicorn 20.1.0
2022-12-24 07:37:53,319 I [32726] gunicorn.error - Listening at: http://0.0.0.0:5001 (32726)
2022-12-24 07:37:53,319 I [32726] gunicorn.error - Using worker: sync
2022-12-24 07:37:53,322 I [32756] gunicorn.error - Booting worker with pid: 32756
Initializing logger
2022-12-24 07:37:53,779 I [32756] azmlinfsrv - Starting up app insights client
2022-12-24 07:37:54,518 I [32756] azmlinfsrv.user_script - Found user script at /home/user-name/azureml-examples/cli/endpoints/online/model-1/onlinescoring/score.py
2022-12-24 07:37:54,518 I [32756] azmlinfsrv.user_script - run() is not decorated. Server will invoke it with the input in JSON string.
2022-12-24 07:37:54,518 I [32756] azmlinfsrv.user_script - Invoking user's init function
2022-12-24 07:37:55,974 I [32756] azmlinfsrv.user_script - Users's init has completed successfully
2022-12-24 07:37:55,976 I [32756] azmlinfsrv.swagger - Swaggers are prepared for the following versions: [2, 3, 3.1].
2022-12-24 07:37:55,977 I [32756] azmlinfsrv - AML_FLASK_ONE_COMPATIBILITY is set, but patching is not necessary.
Informatie over de indeling van logboekgegevens
Alle logboeken van de deductie-HTTP-server, met uitzondering van het startprogrammascript, bevatten gegevens in de volgende indeling:
<UTC Time> | <level> [<pid>] <logger name> - <message>
De vermelding bestaat uit de volgende onderdelen:
<UTC Time>
: Tijdstip waarop de vermelding is ingevoerd in het logboek.<pid>
: id van het proces dat is gekoppeld aan de vermelding.<level>
: Het eerste teken van het logboekregistratieniveau voor de vermelding, zoalsE
voor ERROR,I
voor INFO, enzovoort.<logger name>
: Naam van de resource die is gekoppeld aan de logboekvermelding.<message>
: Inhoud van het logboekbericht.
Er zijn zes niveaus van logboekregistratie in Python met toegewezen numerieke waarden op basis van ernst:
Niveau van logboekregistratie | Numerieke waarde |
---|---|
KRITISCH | 50 |
FOUT | 40 |
WAARSCHUWING | 30 |
INFO | 20 |
DEBUG | 10 |
NOTSET | 0 |
Serverproblemen oplossen
De volgende secties bevatten basistips voor probleemoplossing voor HTTP-server voor Azure Machine Learning-deductie. Zie Problemen met online-eindpunten oplossen om problemen met online-eindpunten op te lossen.
Geïnstalleerde pakketten controleren
Volg deze stappen om problemen met geïnstalleerde pakketten op te lossen.
Verzamel informatie over geïnstalleerde pakketten en versies voor uw Python-omgeving.
Controleer of de
azureml-inference-server-http
python-pakketversie die is opgegeven in het omgevingsbestand overeenkomt met de HTTP-serverversie van Azure Machine Learning die wordt weergegeven in het opstartlogboek.In sommige gevallen installeert de pip-afhankelijkheidsoplossing onverwachte pakketversies. Mogelijk moet u de geïnstalleerde pakketten en versies corrigeren
pip
.Als u flask of de bijbehorende afhankelijkheden in uw omgeving opgeeft, verwijdert u deze items.
- Afhankelijke pakketten zijn onder andere , , , , en
click
markupsafe
.werkzeug
itsdangerous
jinja2
flask
flask
wordt vermeld als een afhankelijkheid in het serverpakket. De beste methode is om de deductieserver toe te staan hetflask
pakket te installeren.- Wanneer de deductieserver is geconfigureerd ter ondersteuning van nieuwe versies van Flask, ontvangt de server automatisch de pakketupdates zodra deze beschikbaar komen.
- Afhankelijke pakketten zijn onder andere , , , , en
Serverversie controleren
Het azureml-inference-server-http
serverpakket wordt gepubliceerd naar PyPI. De PyPI-pagina bevat het wijzigingenlogboek en alle vorige versies.
Als u een eerdere pakketversie gebruikt, werkt u uw configuratie bij naar de nieuwste versie. De volgende tabel bevat een overzicht van stabiele versies, veelvoorkomende problemen en aanbevolen aanpassingen:
Versie van het pakket | Beschrijving | Verzenden | Oplossing |
---|---|---|---|
0.4.x | Gebundeld in trainingsafbeeldingen die zijn gedateerd 20220601 of eerder en azureml-defaults pakketversies .1.34 via 1.43 . De nieuwste stabiele versie is 0.4.13. |
Voor serverversies ouder dan 0.4.11 kunnen Flask-afhankelijkheidsproblemen optreden, zoals "can't import name Markup from jinja2" . |
Voer een upgrade uit naar versie 0.4.13 of 0.8.x, indien mogelijk de nieuwste versie. |
0.6.x | Vooraf geïnstalleerd in deductie-installatiekopieën die zijn gedateerd 20220516 en eerder. De nieuwste stabiele versie is 0.6.1. |
N.v.t. | N.v.t. |
0.7.x | Ondersteunt Flask 2. De nieuwste stabiele versie is 0.7.7. | N.v.t. | N.v.t. |
0.8.x | De logboekindeling is gewijzigd. Ondersteuning voor Python 3.6 is beëindigd. | N.v.t. | N.v.t. |
Pakketafhankelijkheden controleren
De meest relevante afhankelijke pakketten voor het azureml-inference-server-http
serverpakket zijn:
flask
opencensus-ext-azure
inference-schema
Als u het azureml-defaults
pakket in uw Python-omgeving hebt opgegeven, is het azureml-inference-server-http
pakket een afhankelijk pakket. De afhankelijkheid wordt automatisch geïnstalleerd.
Tip
Als u Python SDK v1 gebruikt en het azureml-defaults
pakket niet expliciet opgeeft in uw Python-omgeving, kan de SDK het pakket automatisch toevoegen. De packager-versie is echter vergrendeld ten opzichte van de SDK-versie. Als de SDK-versie bijvoorbeeld is 1.38.0
, wordt de azureml-defaults==1.38.0
vermelding toegevoegd aan de pip-vereisten van de omgeving.
TypeError tijdens het opstarten van de server
U kunt het volgende TypeError
tegenkomen tijdens het opstarten van de server:
TypeError: register() takes 3 positional arguments but 4 were given
File "/var/azureml-server/aml_blueprint.py", line 251, in register
super(AMLBlueprint, self).register(app, options, first_registration)
TypeError: register() takes 3 positional arguments but 4 were given
Deze fout treedt op wanneer Flask 2 is geïnstalleerd in uw Python-omgeving, maar de azureml-inference-server-http
pakketversie biedt geen ondersteuning voor Flask 2. Ondersteuning voor Flask 2 is beschikbaar in azureml-inference-server-http
pakketversie 0.7.0 en hoger en azureml-defaults
pakketversie 1.44 en hoger.
Als u het Flask 2-pakket niet gebruikt in een Azure Machine Learning Docker-installatiekopieën, gebruikt u de nieuwste versie van het
azureml-inference-server-http
ofazureml-defaults
pakket.Als u het Flask 2-pakket in een Azure Machine Learning Docker-installatiekopieën gebruikt, controleert u of de buildversie van de installatiekopieën juli 2022 of hoger is.
U vindt de versie van de installatiekopieën in de containerlogboeken. Voorbeeld:
2022-08-22T17:05:02,147738763+00:00 | gunicorn/run | AzureML Container Runtime Information 2022-08-22T17:05:02,161963207+00:00 | gunicorn/run | ############################################### 2022-08-22T17:05:02,168970479+00:00 | gunicorn/run | 2022-08-22T17:05:02,174364834+00:00 | gunicorn/run | 2022-08-22T17:05:02,187280665+00:00 | gunicorn/run | AzureML image information: openmpi4.1.0-ubuntu20.04, Materialization Build:20220708.v2 2022-08-22T17:05:02,188930082+00:00 | gunicorn/run | 2022-08-22T17:05:02,190557998+00:00 | gunicorn/run |
De builddatum van de installatiekopieën wordt na de
Materialization Build
notatie weergegeven. In het voorgaande voorbeeld is20220708
de versie van de installatiekopieën 8 juli 2022. De afbeelding in dit voorbeeld is compatibel met Flask 2.Als u geen vergelijkbaar bericht in het containerlogboek ziet, is uw installatiekopieën verouderd en moeten ze worden bijgewerkt. Als u een CUDA-installatiekopie (Compute Unified Device Architecture) gebruikt en u geen nieuwere installatiekopie kunt vinden, controleert u of uw installatiekopie is afgeschaft in AzureML-Containers. U vindt aangewezen vervangingen voor afgeschafte installatiekopieën.
Als u de server gebruikt met een online-eindpunt, kunt u de logboeken ook vinden op de pagina Logboeken op de pagina Eindpunten in Azure Machine Learning-studio.
Als u implementeert met SDK v1 en geen installatiekopieën expliciet opgeeft in uw implementatieconfiguratie, past de server het openmpi4.1.0-ubuntu20.04
pakket toe met een versie die overeenkomt met uw lokale SDK-toolset. De geïnstalleerde versie is echter mogelijk niet de meest recente beschikbare versie van de installatiekopieën.
Voor SDK-versie 1.43 installeert de server standaard de openmpi4.1.0-ubuntu20.04:20220616
pakketversie, maar deze pakketversie is niet compatibel met SDK 1.43. Zorg ervoor dat u de nieuwste SDK voor uw implementatie gebruikt.
Als u de installatiekopieën niet kunt bijwerken, kunt u het probleem tijdelijk voorkomen door de azureml-defaults==1.43
vermeldingen in azureml-inference-server-http~=0.4.13
uw omgevingsbestand vast te maken. Met deze vermeldingen wordt de server om de oudere versie met flask 1.0.x
.
ImportError of ModuleNotFoundError tijdens het opstarten van de server
Tijdens het opstarten van de server kunt u een ImportError
of ModuleNotFoundError
meer specifieke modules tegenkomen, zoals opencensus
, jinja2
, markupsafe
of click
. In het volgende voorbeeld ziet u het foutbericht:
ImportError: cannot import name 'Markup' from 'jinja2'
De import- en modulefouten treden op wanneer u versie 0.4.10 of eerdere versies van de server gebruikt die de Flask-afhankelijkheid niet vastmaken aan een compatibele versie. Installeer een latere versie van de server om het probleem te voorkomen.