I got this error → “Invoke Python Method: One or more errors occurred.”
Hey @Sukanya_Dutta,
Could you please share the screenshot here for better understanding.
Thanks,
Sanjit
Hello @Sukanya_Dutta
Refer this thread , it may helps you
This error usually occurs if are using python script and it has errors in paths, variables etc.
Method name is case sensitive, could you check if the same method name which you are trying to call is defined in the script.
Yes both are same
Have a look on this thread, this might can help you
Hi @Sukanya_Dutta,
Your Read File Path is set incorrectly
It should be Downloads\creditcard.csv
Not Downloads\creditcard.csv\creditcard.csv
So your python scope is not getting the correct input.
We cannot see your Python method code and what you return.
Are you using any file path inside your code?
If it is so, try to make it absolute.
what is the type of object which is returned by the method used in the code.
import pandas as pd
import joblib
import json
class Main(object):
def init(self):
pass
def predict(self, X):
model = joblib.load(‘finalized_model.sav’)
X = json.loads(X)
result = model.predict_proba(X)
return json.dumps(result.tolist())
if name == ‘main’:
with open(‘./creditcard.csv’, ‘rb’) as input_file:
bytes = input_file.read()
m = Main()
Hi again,
We do not know where your inpur csv is. My suggestion was just by looking at your Read File Location. If you know that the input csv location is correct then ignore what I said before. We want to you eliminate causes for failures.
Please read this post to see how to properly use methods from your python scripts.
Using class methods is not the same as using functions. Here you have a class method and not a function. UiPath can execute functions not class methods.
Invoke Python Method: Pipe is broken - Help / Activities - UiPath Community Forum
I would have simiplified your code like this. I cannot test this so you will have to check that this works outside UiPath first.
You are not using Pandas here so, ignore it.
Make sure you are using absolute path in model = joblib.load(‘finalized_model.sav’)
import joblib
import json
def predict(in_argument):
"""
This function predicts (Something)
in_argument : Your input argument
Returns : Predicted json string to UiPath
"""
with open(‘./creditcard.csv’, ‘rb’) as input_file:
bytes = input_file.read()
model = joblib.load(‘finalized_model.sav’)
payload = json.loads(in_argument)
result = model.predict_proba(payload)
return json.dumps(result.tolist())
I also suggest you to refer to PEP 8 – Style Guide for Python Code | peps.python.org
-
When you run in outside UiPath studio, does the python script work? It is worthwhile to check if it does before integrating with Python Scope in the Studio.
-
Can you show the properties for the “Invoke Python Method” activity. We want to see how you have passed your input variable to the method “predict”
Hi @Sukanya_Dutta ,
If you create .py file and run directly by double click then you can use Start process activity to call .py file. This will work for sure. But only disadvantage is that you can’t utilize any of variables generated by python engine in side the UiPath code.
Alternatively you can save results set on a notepad in Python code and read Python output by UiPath activities and utilize them.
Hope i am clear in my explanation.
Hi again,
I think you should avoid reading the same creditcard.csv both in the python function and UiPath
Keep it simple and short.
import joblib
import json
def predict():
"""
This function predicts (Something)
in_argument : Your input argument
Returns : Predicted json string to UiPath
"""
with open(‘./creditcard.csv’, ‘rb’) as input_file:
bytes = input_file.read()
model = joblib.load(‘finalized_model.sav’)
payload = json.loads(in_argument)
result = model.predict_proba(payload)
return json.dumps(result.tolist())
- Python Scope
- Load Python Script
- Invoke Python Method (without any parameters) for example you only have to call “predict”
without any parameters - Get Python Object
But without any input parameter How can the model predict the output ?