imhamburger 님의 블로그
파이썬(Python) - 패키지 설치하고 내가 만든 기능에 적용해보기 본문
간단한 계산기 기능을 파이썬을 이용해 만들고 패키지로 만들어 배포한다. 그리고 다른 기능에 미리 만든 계산기 패키지를 설치하고 계산기 패키지 안에 있는 함수를 dependencies로 받는 과제를 하였다.
필요한 파일은 총 2개이다. 계산기 기능을 가지고 있는 파일과 계산기 기능을 사용한 파일
1. 먼저 계산기 기능을 구현하기 위해 간단한 파이썬 코드를 작성한다.
import sys
a = int(sys.argv[1]) #인자를 받을 변수 a
b = int(sys.argv[2]) #인자를 받을 변수 b
def add():
print(a + b)
def div():
print(a / b)
def mul():
print(a * b)
여기서 sys.argv는 터미널에서 파이썬 파일의 인자를 받을 때 사용하는 함수인데, input의 기능과 동일하다. [ 1 ]과 [ 2 ]로 지정한 이유는 우리가 터미널에서 실행할 때 실행할 함수 이름을 적고 그다음 인자 a, 인자 b를 적어야 한다. 함수 이름 자리가 [ 0 ] 이 되기 때문에 그 다음에 올 값만 계산을 해야하니 [ 1 ] 과 [ 2 ] 가 온 것이다.
add 1 2 #결과값 3
만약, sys.argv를 int로 감싸지 않는다면 어떤 현상이 일어날까?
결과는 아래와 같다.
add 1 2 #결과값 12
int값이 아니기 때문에 문자로 받아 '12'로 출력되는 것을 볼 수 있다.
만약, 인자값을 더 추가하여 입력한다면? 당연히 에러가 날 것이다. 우리는 [0], [1], [2]값만 주었기 때문이다. [3]은 없다.
2. 다 만들었으면 저장하고 pyproject.toml에 실행명령을 업데이트해둬야 한다. 이 부분을 잘 모르겠다면 이전글 확인!
[project.scripts]
ham_add = 'ham_func.ham_func:add'
ham_div = 'ham_func.ham_func:div'
ham_mul = 'ham_func.ham_func:mul'
3. 배포 전 테스트해보기
pip install .
배포 전, 위 코드로 내가 방금 기능을 설치하고 잘 작동하는지 확인해봐야 한다.
테스트 결과)
4. 배포하기
pdm publish
테스트도 해보았고 최종적으로 배포한다.
5. 방금 배포한 패키지를 이용할 다른 파일 만들기
이제 배포한 패키지를 다른 코드로 호출하여 써볼 것이기 때문에 파일 하나를 더 만든다.
mkdir ham_rev #ham_rev라는 폴더 생성
cd ham_rev #폴더로 이동
pdm init #pip 패키지 사용을 위한 pdm 실행
6. 위에서 만든 패키지 설치하기
pip install ham_func
7. src/ham_rev 경로 안에 파이썬 파일을 만들고 코드 작성하기
from ham_func.ham_func import * #ham_func 패키지 호출
def rev_add():
add() #ham_func에 작성하였던 함수이름
def rev_div():
div()
def rev_mul():
mul()
그럼 이걸로 끝?
이라고 생각하면 안되고,
8. pyproject.toml 에 dependencies를 추가해야 한다.
왜냐하면 지금 파이썬코드는 ham_func 이라는 패키지에 의존하고 있기 때문이다. 추가하는 방법은 직접해줘도 되지만 나는 다음 명령어로 추가해주었다.
pdm add ham_func #pdm add {패키지명}
그리고 또 추가해줘야 할 것이 있다!
9. 바로 실행명령어 추가하기. 실행명령어가 없으면 실행을 할 수 없으니까...
[project.scripts]
call_add = 'ham_rev.ham_rev:rev_add'
call_div = 'ham_rev.ham_rev:rev_div'
call_mul = 'ham_rev.ham_rev:rev_mul'
위 코드를 풀어쓰자면, {실행 명령어} = '{파이썬 파일이 있는 경로}:{함수명}'
나는 더하기, 나누기, 곱하기 총 3개의 기능을 쓸거니까 각각 기능마다 만들어줘야 한다.
그럼 테스트를 해보자. 위 방법과 동일하게 하면 된다. pip install .
아주 잘 작동한다.
해당 기능도 패키지에 배포하고 싶다면 위 방법과 동일하게 pdm publish 를 해주면 된다.
오늘은 패키지 배포와 배포된 패키지를 이용하여 적용하고 dependencies 관계를 이해하기 위해 한번 연습삼아 해보았다!
하면서 sys.argv 작동원리를 간단하게 이해할 수 있어 뜻밖의 공부가 되어버렸다.
'파이썬(Python)' 카테고리의 다른 글
파이썬(Python) - argparse 이용하여 띄어쓰기 포함한 인자값 받기 (0) | 2024.07.26 |
---|---|
파이썬(Python) - {subprocess.py:93} INFO - cut: stdin: Illegal byte sequence 에러 해결하기 (2) | 2024.07.23 |
파이썬(Python) - pyenv virtualenv 이해와 직접 패키지 만들어 배포하기 (0) | 2024.07.18 |
파이썬(Python) - pyenv 설치, pdm 패키지, python 간단한 기능 구현하기 (1) | 2024.07.16 |
파이썬(Python) - 클래스(Class) (0) | 2024.06.27 |