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를 어떻게 하느냐가 문제다.

성능적으로 좋은 방법인지는 모르겠지만[각주:1]

내가 썼던 방법은 파이썬에서 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에 대부분 어울리지 않습니다.

기존의 코드가 있는 경우 활용하려고 하면 어느 정도는 맞을 수 있겠네요

 

  1. 사실 그 정도로 퍼포먼스를 신경써야 한다면 Uipath로 하는 걸 추천하지 않는다. [본문으로]

+ Recent posts