Skip to content

스크립트 개발 / 사용자 Python 모듈 업로드

어떤 경우에는 사용자가 필요한 Python 모듈이 PyPI 플랫폼에 게시되지 않고 파일 형태로 직접 존재합니다.

이때 이러한 파일을 DataFlux Func의 리소스 디렉터리 안의 "user-python-packages/" 디렉터리에 업로드하여 스크립트에서 직접 참조할 수 있습니다.

1. Python 모듈 업로드

사용자는 실제 상황에 따라 업로드 방식을 선택할 수 있으며, 결과적으로는 아무런 차이가 없습니다.

호스트 머신에 직접 업로드

사용자가 호스트 머신에 대한 접근 권한을 가지고 있다면, 익숙한 SSH 도구 등을 통해 Python 파일 / 디렉터리를 {설치 디렉터리}/data/resources/user-python-packages/ 디렉터리에 직접 업로드할 수 있습니다.

기본 설치 디렉터리는 /usr/local/dataflux-func이며, 확실하지 않은 경우 cat /etc/dataflux-func 명령으로 확인할 수 있습니다

"파일 관리"를 사용하여 업로드

사용자가 호스트 머신에 대한 접근 권한이 없는 경우, "관리 / 실험적 기능 / 파일 관리 활성화"를 활성화한 후 "관리 / 파일 관리"에서 업로드할 수 있습니다.

enable-file-manager.png

upload-zip-file.png

unzip-file.png

사용자가 업로드한 zip 압축 파일이 압축 해제 후 디렉터리 구조를 손상시키는 것을 방지하기 위해, "파일 관리"에서 압축을 해제하면 디렉터리가 강제로 생성됩니다.

따라서 업로드한 zip 압축 파일 자체에 이미 디렉터리 한 겹이 있다면, 압축 해제 후 디렉터리 구조가 한 겹 더 추가됩니다.

실제 상황에 따라 Python 모듈의 디렉터리를 user-python-packages/xxxxx로 이동하면 됩니다.

move-user-pkg.png

move-dest.png

user-python-packages/ 디렉터리로 이동하여 업로드할 Python 패키지 디렉터리를 확인합니다.

user-pkg-ready.png

2. 업로드한 Python 모듈 사용

업로드한 Python 모듈이 다음과 같다고 가정합니다.

my_pkg/__init__.py
1
from my_pkg.hello_world import hello_world
my_pkg/hello_world.py
1
2
def hello_world():
    return 'Hello, world!!!'

그러면 스크립트에서 이 모듈을 직접 import 하여 사용할 수 있습니다. 예를 들면:

Python
1
2
3
4
5
import my_pkg

def run():
    data = my_pkg.hello_world()
    print(data)

use-user-pkg.png

3. 주의사항

직접 업로드한 Python 모듈은 다른 Python 모듈과 이름이 겹치지 않도록 주의하고, 기존 extra-python-packages에 존재하는 디렉터리를 삭제하거나 이름을 변경해서는 안 됩니다.