프로젝트를 릴리즈 하다보면 다른사람에게 보이고싶지 않은 코드가 종종 있을 것이다.
그럴 경우 파이썬 파일을 라이브러리화 하여 코드를 공개하지 않는 방법이 있는데 그 중 한 가지 방법은 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 가 위치하고 있던 곳에 위치하고 있으면 된다
'Programming > Python' 카테고리의 다른 글
[Python] list를 부분 분리 할 때 사용하는 '*' (0) | 2022.10.06 |
---|---|
[Ubuntu][python] pip install 사용시 발생하는 UnicodeDecodeError 해결방법 (0) | 2020.06.02 |
[Python] 반복문에서 진행결과 (Progress bar) 표시하기 (0) | 2020.01.15 |
[Python] 파이썬 프로젝트에서 참조하는 파일의 path 고정하기 (1) | 2019.11.15 |
[python] mysql 연결 (1) | 2019.10.14 |