1. 실행 패턴
기본적으로 로컬의 PVM 기반으로 실행을 한다.
따라서 실행될 Device의 로컬에 python은 설치해 주어야 하며, 필요한 패키지도 미리 설치해줘야 한다.
(혹은 패키지 관리툴의 설정파일을 뿌려놓을 수도 있긴 하다. 없으면 설치하고 진행할 수 있게.)
++ 보통 안 되는 경우 파이참과 같은 인터프리터 환경이 아닐 가능성이 높습니다. 환경과 패키지를 먼저 확인해 보세요~
1) PVM 위치(파이썬 위치) 지정
2) 소스 불러오기
3) 함수 및 파라미터 지정 및 실행
4) Get Return Value
1)의 과정은 Python Scope으로 지정한다.
C:\Users\{Username}\AppData\Local\Programs\Python\PythonXX (XX는 파이썬 버전. 3.8이면 38)
2)는 Load Python Script로 실행한다.
2)의 과정은 소스를 불러와서 실행하기 위한 파이썬 객체를 생성한다.
3)에서는 2)에서 얻은 파이썬 객체, 파라미터 , 함수 이름을 넣는다.
함수에 파라미터가 있다면 Array 형태로 순서대로 넣어준다.
그리고 역시나 결과를 담은 파이썬 객체를 리턴한다.
다만 이 객체에 있는 정보를 가져오려면 Get Python Obejct를 써서 Output으로 받아야 한다.
다만 디버깅은 파이참에서 하는 게 낫다.
에러가 나면 pipe is broken 같은 메시지가 뜨면서 뭐가 잘못된 건지 알기 어렵다.
아니면 파이썬에 Try Catch를 잘 구성해서 에러메시지를 잘 받아오자.
(어차피 파이썬에서는 데이터 처리만 해야지 프로세스가 복잡해져선 관리가 어렵다.)
2. 리턴
리턴은 사실 안 받을 수도 있고 파일 결과물을 확인할 수도 있다.
파이썬에서 작업하면 JSON으로 가져오고 그걸 Uipath에서 가장 많이 쓰는 Datatable로 가져오면 편한데
DataFrame과 DataTable간 Convert를 어떻게 하느냐가 문제다.
성능적으로 좋은 방법인지는 모르겠지만
내가 썼던 방법은 파이썬에서 JSON으로 주고,
DataTable 형태로 구성된 JSON을 다시 Uipath에서 Datatable로 Convert하는 방식이다.
그럼 파이썬에서 Dataframe을 JSON으로 변경해야 하는데
str_json = df.to_json(orient='records', force_ascii=False)
이런 형태로 변경하면 된다.
결정적으로 Dataframe은 Columnal 데이터인 series로 이뤄져 있기 때문에
JSON으로 그냥 바꾸면 datatable로 변형하기 어려운 형태가 된다.
이때 records 단위로 convert하면 Uipath의 Datatable로 쉽게 바뀌는 구조가 된다.
[force_ascii는 인코딩 때문에 false로 줌]
------- 주의 사항 -------
애초에 파이썬 코드를 자동화, 배치 실행하는 관리 툴로서 RPA를 권장하지는 않습니다.
디버깅도 다른 툴에서 해야 되거니와 이런 배치가 늘어난다면, 더 효율적인 무료툴과 OS가 있기 때문이죠.
[airflow같은 workflow management툴 등, OS는 우분투 등등]
파이썬 코드 자동화는 RPA에 대부분 어울리지 않습니다.
기존의 코드가 있는 경우 활용하려고 하면 어느 정도는 맞을 수 있겠네요