본문 바로가기

코딩/Python

[Python/파이썬] xlwings RunPython 파일 경로 수정하기(다른 경로 파이썬 파일 import 하기)

반응형

이전 포스팅 : 2021.06.06 - [코딩/Python] - [Python/파이썬] 엑셀 VBA에서 파이썬 코드 실행시키기 - xlwings 모듈

 

  이전 xlwings 관련 포스팅 중, 엑셀 VBA에서 파이썬 코드를 실행시키는 내용으로 글을 작성한 적이 있다. VBA에서 xlwings addin을 사용하면 파이썬 코드를 불러서 엑셀 프로그램에 적용할 수 있다.

 

  그런데, 업무에 적용하려다 보니 엑셀 매크로파일을 사용자들에게 배포하고 엑셀 매크로파일에서 불러올 파이썬 함수를 공용 서버에 두다보니 아래와 같은 문제가 발생하였다. 문제가 된 상황을 먼저 정리해보자.

 

  먼저 2개의 파일을 생성한다. 같은 경로에 있어야 한다.

  -. py1.py : 실행시킬 파이썬 코드(xlwings 라이브러리 사용)

  -. py1.xlsm : 엑셀 매크로 파일, 이 파일에서 py1.py를 불러 사용할 예정

 

코드는 아래와 같이 작성해보자.

 

<py1.py : 파이썬 파일>

import  xlwings

def  main():
    #xlwings 통해 Workbook 호출
    wb = xlwings.Book.caller()

    #Sheet 설정
    sheet = wb.sheets[0]

    #텍스트 입력
    sheet["A1"].value = "투손 플레이스"
    sheet["A2"].value = "이 것은 전자책 광고입니다"
    sheet["A3"].value = "위키독스 - 사장님 몰래 하는 파이썬 업무자동화"

 

<py1.xlsx : 엑셀 VBA>

Sub test()
	
    '같은 경로에 있는 py1.py 파일을 import해서 내부의 main( ) 함수 실행하기
    RunPython "import py1; py1.main()"

End Sub

 

<결과>

※ 주의 : 엑셀 파일(py1.xlsm)에서 xlwings를 참조해야 정상적으로 실행 됨(아래 이미지 참고)

 

 

  이전 포스팅에서 다룬 것처럼 엑셀 매크로 파일과 파이썬 파일이 같은 경로에 있으면 import 할 수 있다. 그런데 만약, 파이썬 파일이 다른 경로에 있으면 어떻게 될까?

 

py1.py 파일을 test 폴더로 이동

 

  위 이미지의 "py1.py"파일의 경로를 test 라는 폴더를 생성하여 이동시켰다. 실제 업무상에는 공용 서버 위치가 될 수 있다. 즉, 엑셀 매크로 파일인 py1.xlsm과는 다른 경로에 있는 상태이다. 그 상태에서 엑셀 매크로를 실행해보자. 그럼 아래와 같이 에러메시지가 출력된다.

 

 

 

 

  에러 메시지를 요약하자면 py1이라는 파일을 찾을 수 없다는 것이다. 그럼 같은 경로에 있는 파이썬 파일만 불러올 수 있는걸까?? 구글링을 해보니 xlwings 공식홈페이지에서 환경변수들에 대한 정보를 제공하는데 파이썬 파일의 path를 설정할 수 있다.

 

(참고링크 : https://docs.xlwings.org/en/stable/addin.html#global-settings)

xlwings의 User Setting - PTHONPATH

xlwings 사용가이드에서 PYTHONPATH라는 변수를 Setting하면 위치가 다른 파이썬 파일도 import할 수 있다고 설명되어 있다. 위 내용은 참고만 하고 실제 방법을 알아보자.

 

 

방법 1. addin에서 파이썬 path를 수정하는 방법

 

 엑셀 xlwings - PYTHONPATH부분에 파이썬 있는 파일 경로를 추가하면 된다. 실제 py1.py 파일이 있는 test폴더로 경로를 수정하고 실행해보자.

 

<결과>

PYTHONPATH 경로 설정 후, 결과

 

위 결과에서 볼 수있듯이, PYTHONPATH를 파이썬 파일이 있는 경로로 수정하면 된다.

 

 

방법2. xlwings.conf 파일에 환경변수 추가하기(default Setting)

 

 

 

xlwings 라이브러리를 설치했다면 위 사용자 폴더에 xlwings.conf 파일이 생성된다. 이 파일을 실행해보자.

 

 

위 이미지에서 보면 알겠지만 PYTHONPATH라는 환경변수가 추가되어있다. 여기서 경로를 수정하여도 마찬가지로 VBA 파일의 PYTHONPATH를 수정할 수 있다.

 

 

728x90