Programming/Python

[Python] Nuitka 를 사용해 파이썬 모듈을 라이브러리 파일로 만들기

우송송 2020. 1. 6. 11:48

프로젝트를 릴리즈 하다보면 다른사람에게 보이고싶지 않은 코드가 종종 있을 것이다.

 

그럴 경우 파이썬 파일을 라이브러리화 하여 코드를 공개하지 않는 방법이 있는데 그 중 한 가지 방법은 nuitka 를 사용하여 *.py 파일을 *.so (mac, ubuntu 기준) 으로 바꾸는 것이다

 

간단하게 테스트 코드를 짜봤다

# LibraryClass.py

class LibraryClass:
    def __init__(self):
        pass

    def add_number(self, a, b):
        return a + b
# main.py

from LibraryClass import *

if __name__ == "__main__":
    inst = TestClass()

    result = inst.add_number(10, 20)
    print(result)

 

LibraryClass.py 의 add_number 함수는 두 수를 파라미터로 받고 합을 return 해주는 함수고

main.py 는 간단하게 두 수를 add_number 함수에 넘겨주고 return 을 받아 그 값을 출력해주는 역할을 한다

 

당연히 결과는 30이 출력이 되겠지만 우리는 LibraryClass.py 파일을 라이브러리화 하는것이 목적이다

 

Nuikta 를 사용하려면 해당 패키지가 설치되어있어야 한다.

pyinstaller 와 같이 파이썬 pip 로 설치가 가능하니 준비시간도 매우 짧은 편이다

만약 설치되어 있지 않다면 아래의 명령어로 설치해 주도록 한다

$ pip install nuitka

nuitka 가 준비되었다면 명령어 한 줄로 바로 라이브러리화 할 수 있다.

 

파일 하나를 라이브러리 파일로 만들어 주는 명령어는 아래와 같다

$ python -m nuitka --module *.py

 

끝나면 *.build, *.pyi, *.so 이렇게 3개의 파일이 만들어 진다

 

 

 

 

*.pyi, *.build 는 필요 없으니 삭제하고 *.so 파일만 남겨둔다  *.so 파일 위치는 기존의 *.py 가 위치하고 있던 곳에 위치하고 있으면 된다