PythonScript politikası çalışma zamanı hatasını giderme

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

ScriptEvaluationFailed

Hata kodu

steps.script.ScriptEvaluationFailed

Hata yanıtı gövdesi

{
    "fault": {
        "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: error_type: error_description"",
        "detail": {
            "errorcode": "steps.script.ScriptEvaluationFailed"
        }
    }
}

Olası nedenler

Python Komut Dosyası politikası birkaç farklı türde ScriptEvaluationFailed hatası verebilir. Aşağıdaki bölümlerde bu hatalardan bazıları açıklanmaktadır.

NameError

PythonScript kodunda, tanımlanmadan referans verilen veya çalıştırılan bir değişken varsa, Name (Ad) hatası alırsınız.

Hata yanıtı gövdesi

{
    "fault": {
        "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: "NameError: variable_name is not defined"",
        "detail": {
            "errorcode": "steps.script.ScriptEvaluationFailed"
        }
    }
}

Örnek hata yanıtı gövdesi

{
    "fault": {
        "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined"",
        "detail": {
            "errorcode": "steps.script.ScriptEvaluationFailed"
        }
    }
}

Teşhis

  1. PythonScript politikasını ve hata yanıtının hata dizesi öğesinden tanımlanmamış değişken adını tanımlayın. Örneğin, aşağıdaki hata dizesinde PythonScript adı myscript.py ve tanımlanmamış değişken adı num3'tür:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
    
  2. Yukarıdaki 1. adımda tanımlanan PythonScript kaynak dosyasını inceleyin ve yukarıdaki 1. adımda tanımlanan tanımlanmamış değişkene referans verildiğini doğrulayın. Örneğin, aşağıdaki PythonScript kodu, hata dizesiyle eşleşen tanımlanmamış num3 değişkenine referansta bulunur:

    num1 = 1.5
    num2 = 6.3
    sum = float(num1) + float(num3)
    print('The sum of {0} and {1} is {2}'.format(num1, num3 sum))
    
  3. Belirli bir değişkenin PythonScript kodunda tanımlanıp tanımlanmadığını kontrol edin. Değişken tanımlı değilse hatanın nedeni budur.

    Yukarıda gösterilen örnek komut dosyasında num3 değişkeni tanımsızdır. Bu nedenle, aşağıdaki hatayı alırsınız:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "NameError: 'num3' is not defined""
    

Çözünürlük

PythonScript kodunda başvurulan tüm değişkenlerin doğru bir şekilde tanımlandığından emin olun.

Yukarıda gösterilen örnek PythonScript ile ilgili sorunu düzeltmek için, kullanmadan önce num3 değişkenini tanımlayın. Örneğin:

num1 = 1.5
num2 = 6.3
num3 = 8.7
sum = float(num1) + float(num3)
print('The sum of {0} and {1} is {2}'.format(num1, num3, sum))

ZeroDivisionError

Bu hata, bir bölme veya modo işleminin ikinci bağımsız değişkeni sıfır olduğunda ortaya çıkar.

Hata yanıtı gövdesi


{
    "fault": {
        "faultstring": "Evaluation of script pythonscript_name (py) failed with reason: "ZeroDivisionError: reason_for_error"",
        "detail": {
            "errorcode": "steps.script.ScriptEvaluationFailed"
        }
    }
}

Örnek hata yanıtı gövdesi


{
    "fault": {
        "faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero"",
        "detail": {
            "errorcode": "steps.script.ScriptEvaluationFailed"
        }
    }
}

Teşhis

  1. PythonScript politika adını ve hata yanıtının hata dizesi öğesinden hatanın nedenini tanımlayın. Örneğin, aşağıdaki hata dizesinde PythonScript adı myscript.py olup hatanın nedeni integer division or modulo by zero şeklindedir:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""
    
  2. Yukarıdaki 1. adımda tanımlanan PythonScript kaynak dosyasını inceleyin ve sıfıra göre bölme veya modül işlemi olup olmadığını doğrulayın. Örneğin, aşağıdaki PythonScript kodu, bölme işlemini sıfıra göre gerçekleştirir ve bu işlem hata dizesindeki değerle eşleşir:

    a = 0
    b = 5
    c = b/a
    print c
    

    Yukarıda gösterilen örnek komut dosyasında, bölme işleminin ikinci bağımsız değişkeni sıfır olduğu için aşağıdaki hatayı alırsınız:

    "faultstring": "Evaluation of script myscript.py (py) failed with reason: "ZeroDivisionError: integer division or modulo by zero""
    

Çözünürlük

PythonScript'te bir bölme veya modlo işleminin ikinci bağımsız değişkeninin sıfır olmadığından emin olun.

Yukarıda gösterilen örnek PythonScript ile ilgili sorunu düzeltmek için bir bölme veya modül işleminin ikinci bağımsız değişkeni olarak sıfır olmayan bir değer kullanın. Örneğin:

a = 3
b = 5
c = b/a
print c

Daha Fazla Bilgi

steps.script.ScriptEvaluationFailed hatasının yukarıda açıklananların dışında birçok olası nedeni vardır. Daha fazla bilgi için lütfen resmi Python belgelerine göz atın.