Freigeben über


Problembehandlung für Fehler descriptors cannot not be created directly

Bei Verwendung von Azure Machine Learning erhalten Sie möglicherweise den folgenden Fehler:

TypeError: Descriptors cannot not be created directly. If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0." It is followed by the proposition to install the appropriate version of protobuf library.

If you cannot immediately regenerate your protos, some other possible workarounds are:
 1. Downgrade the protobuf package to 3.20.x or lower.
 2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).

Dieser Fehler kann insbesondere bei Verwendung von AutoML auftreten.

Ursache

Dieses Problem wird durch Breaking Changes verursacht, die in protobuf 4.0.0 eingeführt wurden. Weitere Informationen finden Sie unter https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates.

Lösung

Für eine lokale Entwicklungsumgebung oder Compute-Instanz installieren Sie das Azure Machine Learning SDK Version 1.42.0.post1 oder höher.

pip install azureml-sdk[automl,explain,notebooks]>=1.42.0

Weitere Informationen zum Aktualisieren einer Azure Machine Learning-Umgebung (für Training oder Bereitstellung) finden Sie in den folgenden Artikeln:

Verwenden Sie den folgenden Befehl, um die Version Ihres installierten SDKs zu überprüfen:

pip show azureml-core

Dieser Befehl sollte ähnliche Informationen zurückgeben wie Version: 1.42.0.post1.

Tipp

Wenn Sie Ihre Azure Machine Learning SDK-Installation nicht aktualisieren können, können Sie die Protobuf-Version in Ihrer Umgebung an 3.20.1 anheften. Das folgende Beispiel ist eine conda.yml-Datei, die zeigt, wie Sie die Version anheften:

name: model-env
channels:
  - conda-forge
dependencies:
  - python=3.8
  - numpy=1.21.2
  - pip=21.2.4
  - scikit-learn=0.24.2
  - scipy=1.7.1
  - pandas>=1.1,<1.2
  - pip:
    - inference-schema[numpy-support]==1.3.0
    - xlrd==2.0.1
    - mlflow== 1.26.0
    - azureml-mlflow==1.41.0
    - protobuf==3.20.1

Nächste Schritte

Weitere Informationen zu den Breaking Changes in protobuf 4.0.0 finden Sie unter https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates.

Weitere Informationen zum Aktualisieren einer Azure Machine Learning-Umgebung (für Training oder Bereitstellung) finden Sie in den folgenden Artikeln: