2023년 스택오버플로 설문 조사 결과, 파이썬은 세 번째로 널리 사용되는 프로그래밍 언어로 자리매김했습니다. 이 다재다능한 언어는 데이터 과학, 웹 개발, 머신 러닝, 소프트웨어 엔지니어링 및 과학 컴퓨팅 등 다양한 분야에서 활용됩니다.
파이썬 패키지는 파이썬 언어를 배우고 사용하는 과정에서 자주 접하게 되는 개념 중 하나입니다. 그렇다면 파이썬 패키지란 무엇이며, 어떻게 만들 수 있을까요?
이 글에서는 다음 내용을 다룹니다:
- 파이썬 패키지의 정의
- 프로그래밍에서 파이썬 패키지의 중요성
- 파이썬 패키지 생성 방법
- 파이썬 패키지 사용 및 테스트 방법
- 파이썬 패키지 업로드 방법
파이썬 패키지란 무엇인가?
파이썬 패키지는 프로그래밍의 핵심 요소입니다. 패키지가 없다면 개발자들은 모든 것을 처음부터 작성해야 하며, 이는 프로그래밍 과정을 길고 복잡하게 만들 것입니다. 파이썬 패키지는 기본적으로 재사용 가능한 코드 묶음인 파이썬 모듈의 모음입니다.
파이썬 모듈은 다른 파이썬 프로그램에서 가져와 사용할 수 있는 파이썬 코드가 포함된 파일입니다. 파이썬 패키지를 만들려면 __init__.py 파일이 포함된 특정 디렉토리에 코드를 저장해야 합니다.
파이썬 패키지는 또 다른 패키지(중첩)를 포함할 수 있으며, 온라인에서 수많은 파이썬 패키지를 찾을 수 있습니다. 일부는 공식 패키지인 반면, 그렇지 않은 패키지도 있습니다. 대부분의 파이썬 패키지는 https://pypi.org/에서 구할 수 있습니다.
파이썬 웹 프레임워크인 Django는 웹 애플리케이션 개발에 사용되는 패키지의 좋은 예입니다. Scikit-learn, PyTorch 및 TensorFlow는 머신 러닝 분야에서 널리 사용되는 패키지입니다.
파이썬 패키지의 중요성
프로그래머로서 왜 모든 것을 처음부터 만들 필요가 있을까요? 파이썬 패키지가 필요한 이유는 무엇일까요? 파이썬 패키지가 중요한 몇 가지 이유는 다음과 같습니다.
- 시간 절약: 파이썬 패키지는 흔한 문제들을 해결하기 위한 사전 작성된 코드에 대한 접근성을 제공합니다. 매번 파이썬 스크립트를 작성할 때마다 바퀴를 재발명하는 대신, 파이썬 패키지를 활용할 수 있습니다.
- 쉬운 코드 배포: 협업은 프로그래밍에서 매우 일반적입니다. 팀원들과 함께 프로젝트를 진행할 때, 언제든 가져와 사용할 수 있는 파이썬 패키지를 만들 수 있습니다.
- 코드 재사용성: 파이썬 프로그램에서 항상 작성해야 하는 코드 블록이 있다면, 이를 패키지로 만들어 애플리케이션에서 가져와 사용할 수 있습니다.
- 코드 구성: 파이썬 패키지를 사용하면 코드를 논리적인 모듈로 구성할 수 있습니다. 이러한 접근 방식은 파이썬 코드를 더욱 읽기 쉽고 유지보수하기 용이하게 만듭니다.
첫 번째 파이썬 패키지를 만드는 방법
파이썬은 다목적 언어라고 앞서 언급했습니다. 프로그래머는 다양한 종류의 패키지를 만들 수 있습니다.
예를 들어, 특정 작업을 자동화하는 패키지, 예산 관리에 도움을 주는 패키지, 또는 새로운 언어 학습을 위한 패키지 등 다양한 패키지를 만들 수 있습니다. 하지만 첫 패키지 생성을 시작하기 전에 다음 사항을 확인해야 합니다.
필요 조건:
- 로컬 컴퓨터에 파이썬이 설치되어 있어야 합니다. 리눅스 환경에서는 파이썬이 기본적으로 설치되어 있습니다. “python –version” 또는 “python3 –version” 명령을 사용하여 파이썬이 설치되어 있는지 확인할 수 있습니다. 설치되어 있다면 터미널에 다음과 유사한 결과가 표시됩니다.
파이썬이 설치되어 있지 않다면 https://www.python.org/downloads/ 에서 다운로드할 수 있습니다.
- 파이썬에 대한 기본적인 이해가 필요합니다. 파이썬 클래스, 모듈, 함수를 작성하는 방법을 알아야 합니다.
- 패키지 관리자가 필요합니다. 이 예시에서는 pip를 사용합니다. 다음 명령을 사용하여 pip가 설치되어 있는지 확인할 수 있습니다.
pip --version
설치되어 있다면 터미널에 다음과 유사한 내용이 표시됩니다.
필요 조건은 만들고자 하는 패키지의 특성에 따라 달라질 수 있습니다.
이 예시에서는 숫자가 소수인지 확인하는 간단한 파이썬 패키지를 만들 것입니다. 다음 단계를 따라 할 수 있습니다:
- 1단계: 프로젝트 폴더를 생성합니다. 여기서는 “primechecker”라고 이름을 지정합니다.
- 2단계: “primechecker” 폴더 안에 “prime”이라는 다른 폴더를 생성합니다.
- 3단계: 2단계에서 만든 디렉터리 내에 “prime.py”라는 파일을 생성합니다. 다음 명령을 사용하여 세 단계를 한 번에 수행할 수 있습니다.
mkdir primechecker && cd primechecker && mkdir prime && cd prime && touch prime.py
- 4단계: 코드 편집기에서 프로젝트를 엽니다. 그런 다음, 숫자가 소수인지 확인하는 코드를 “prime.py” 파일에 추가할 수 있습니다.
def is_prime(number): if number < 2: return False for i in range(2, int(number ** 0.5) + 1): if number % i == 0: return False return True
- 5단계: “prime” 폴더 안에 “__init__.py”라는 새 파일을 생성합니다. 이 파일은 파이썬이 프로젝트 폴더를 패키지로 인식하도록 합니다.
다음 명령을 사용할 수 있습니다.
touch prime/__init__.py
- 6단계: 코드를 테스트합니다. 루트 폴더 내에 “test.py”라는 파일을 만들어 숫자가 소수인지 확인하는 스크립트를 작성합니다. 기본 폴더로 돌아가서 다음 명령을 사용합니다.
touch test.py
그런 다음, 다음과 같은 코드를 해당 파일에 추가할 수 있습니다.
from prime.prime import is_prime number = int(input("숫자를 입력하세요: ")) result = is_prime(number) print(f"{number}는 소수입니다: {result}")
다음 명령을 실행하여 코드를 확인하세요.
python3 test.py
이제 숫자를 입력하고 소수인지 확인할 수 있습니다.
예를 들어, 5와 1이 소수인지 확인했을 때 다음과 같은 결과를 얻었습니다.
패키지를 온라인에 업로드하는 방법
PyPI(Python Package Index)에서 생성한 패키지를 호스팅할 수 있습니다. PyPI는 수많은 파이썬 패키지를 보유한 중앙 저장소입니다. 계정이 없다면 https://pypi.org/로 이동하여 계정을 만드세요.
이제 다음 단계에 따라 온라인으로 패키지를 업로드할 수 있습니다.
- 1단계: 루트 폴더(“primechecker” 폴더)에 “setup.py”라는 새 파일을 생성합니다.
- 2단계: “setup.py” 파일의 내용을 변경하여 업로드하려는 패키지에 대한 정보를 포함합니다.
이 파일의 코드는 다음과 같아야 합니다.
from setuptools import setup, find_packages setup( name="primechecker", version='1.0.0', author="Your Name", author_email="[email protected]", description='소수 확인 패키지', packages=find_packages(), )
패키지 상세 정보에 맞게 이름, 작성자, author_email, 설명을 수정합니다.
- 3단계: 패키지를 빌드합니다. 루트 폴더에 있는 상태에서 다음 명령을 실행합니다.
python3 setup.py sdist bdist_wheel
프로젝트 폴더를 확인하면 루트 폴더 내에 “build” 및 “dist”라는 두 개의 새로운 폴더가 생성된 것을 확인할 수 있습니다.
- 4단계: twine을 설치합니다. twine은 PyPI에 패키지를 업로드하는 데 필요한 패키지입니다.
다음 명령을 사용하세요.
pip install twine
- 5단계: 패키지를 업로드합니다.
다음 명령을 사용하세요.
twine upload dist/*
사용자 이름과 비밀번호를 입력하라는 메시지가 표시됩니다. 패키지 이름이 아직 사용되지 않은 경우 패키지가 온라인에 게시되고 터미널에 링크가 표시됩니다.
방금 게시한 패키지는 이제 공개되었습니다. 패키지를 사용하려는 사람은 누구나 pip를 사용하여 다운로드할 수 있습니다.
예를 들어, 내가 게시한 패키지는 다음과 같이 다운로드할 수 있습니다.
pip install primechecker==1.0.0.
파이썬 패키지 생성을 위한 모범 사례
- 파이썬 패키징 표준을 준수하세요. 생성할 패키지 유형은 자유롭게 결정할 수 있지만 파이썬 패키지에는 준수해야 하는 표준이 있다는 점을 기억해야 합니다. 코드 작성을 시작하기 전에 https://packaging.python.org/에서 이러한 표준을 확인하세요.
- 배포 전에 패키지를 테스트하세요. 버그는 프로그래밍에서 흔히 발생합니다. 특히 대규모 패키지를 빌드할 때는 자동화된 테스트를 생성하기 위한 스크립트를 작성하세요. 이러한 접근 방식은 버그 없는 패키지를 업로드하는 데 도움이 됩니다.
- 버전 관리: 적절한 패키지는 시맨틱 버전 관리를 따라야 합니다. 예시로 만든 패키지의 버전 번호는 1.0.0입니다. 첫 번째 숫자(1)는 메이저 버전, 두 번째 숫자(0)는 마이너 버전, 마지막 숫자는 패치입니다.
- 모든 종속성을 지정하세요. 패키지 내에 다양한 종속성 또는 다른 패키지가 필요할 수 있습니다. 업로드할 때 패키지 설명에 모든 종속성을 명시해야 합니다. setuptools 또는 poetry와 같은 도구를 사용하여 이러한 종속성을 추가하고 관리할 수 있습니다.
- 버전 관리 시스템을 사용하세요. 프로그래밍은 지속적인 과정입니다. 새로운 기능을 추가하거나 더 효율적으로 만들기 위해 패키지를 계속해서 업그레이드하거나 개선할 수 있습니다. 기여자를 초대할 수도 있습니다. 패키지 코드를 GitHub 또는 GitLab과 같은 플랫폼에 업로드하여 코드를 공유하고 협업을 가능하게 하세요.
- 코드 문서화: 예시로 만든 패키지는 데모용이었습니다. 하지만 패키지를 대중이나 팀원과 공유하려는 경우 사용자를 안내하는 문서를 생성해야 합니다. Pydoc 또는 Sphinx와 같은 도구를 사용하여 문서를 생성할 수 있습니다.
파이썬 패키지를 어디에 업로드할 수 있나요?
PyPI(Python Package Index)는 파이썬 패키지의 공식 저장소이지만, PyPI만 사용해야 한다는 의미는 아닙니다. 파이썬 패키지를 업로드할 위치를 결정할 때 파일 크기, 패키지 특성, 필요한 지원 수준, 대상 고객 등 몇 가지 요소를 고려해야 합니다.
다음은 파이썬 패키지를 업로드할 수 있는 다른 장소입니다.
- GitHub: GitHub는 가장 큰 코드 호스팅 플랫폼입니다. 리포지토리를 만들고 파이썬 패키지를 zip 파일로 추가하여 재배포할 수 있습니다.
- Conda: Conda는 파이썬 패키지에 사용할 수 있는 패키지 관리자입니다. 이 플랫폼은 데이터 과학자들 사이에서 인기가 높습니다. Conda에서 계정을 생성하고 패키지 업로드를 시작하여 재배포할 수 있습니다.
- PyPI 미러: PyPI 플랫폼의 콘텐츠를 미러링하는 다양한 PyPI 미러가 있습니다. 필요에 맞는 미러를 선택하여 패키지를 호스팅할 수 있습니다.
결론
이제 파이썬 패키지를 만들고 온라인에 게시하는 방법을 알게 되었습니다. 예시로 사용한 패키지는 기본적인 수준이었지만, 더 복잡한 패키지도 만들 수 있습니다. 파이썬 패키지를 만들 때는 항상 올바른 폴더 구조를 유지하는 것이 중요하다는 점을 기억하세요.