pip install
명령어를 통해서 원하는 패키지를 등록하고, 프로그래밍을 하는게 보통이다.pip install
을 이용하여 파이썬 패키지를 설치하는 것은 어떻게 만들까?
PyPI 에 접근하여 다음과 같은 형태로 자신의 계정을 생성한다.
프로젝트 구조는 다음과 같이 작성하자.
- scdev_kit - src - scdev_pd_column - __init__.py - example.py - LICENSE.txt - pyproject.toml - README.md - setup.py
위와 같이 구조는 프로젝트 빌드를 위한 기본 구조이다.
이러한 구조 형식은 대부분의 폴젝트 빌드시 동일하므로 숙지하는 것이 좋다.
이제는 모듈을 작성해 보자.
우리는 pandas 를 이용하므로 다음과 같이 패키지를 설치해주자.
% python -m pip install --upgrade pip % python -m pip install --upgrade pandas
우리는 pandas 패키지를 이용하여, 특정 데이터프레임의 칼럼 이름을 이용하여 해당 칼럼의 모든 데이터를 추출하는 간단한 샘플이다.
"""판다스 칼럼 조회하기""" import pandas as pd def getColumn(df, columnName): return df.loc[:,[columnName]]
이제 패키지를 생성하기 위한 파일들을 작성할 것이다.
파일은 이전 구조 설명시에 모두 빈 파일을 만들어 두었고, 내용을 어떻게 작성하고, 해당 내용에 들어간 소스에 대한 설명을 할 것이다.
pyproject.toml 파일은 빌드 툴에게 (pip 혹은 build) 프로젝트 빌드를 위해서 필요한 의존성을 알려준다.
이 튜토리얼에서는 setuptools과 wheel 을 이용할 것이다.
[build-system] requires = [ "setuptools>=42", "wheel" ] build-backend = "setuptools.build_meta"
build-system.requires:
build-system.build-backend:
이제 메타 데이터를 작성할 차례이다.
메타 데이터는 setup.cfg와 setup.py 를 생성할 수 있다.
https://packaging.python.org/en/latest/tutorials/packaging-projects/ 에서 Configuring metadata 를 참조하자.
setup.cfg:
setup.py:
setup.py 파일을 다음과 같이 작성하자.
import setuptools with open("README.md", "r", encoding="utf-8") as fh: long_description = fh.read() setuptools.setup( name="example-pkg-scdev-pd-columns", version="0.0.1", author="Schooldevops", author_email="schooldevops@gmail.com", description="schooldevops sample lib", long_description=long_description, long_description_content_type="text/markdown", url="https://github.com/schooldevops/python-tutorials", project_urls={ "Bug Tracker": "https://github.com/schooldevops/python-tutorials/issues", }, classifiers=[ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ], package_dir={"": "src"}, packages=setuptools.find_packages(where="src"), python_requires=">=3.6", )
위와 같이 메타데이터를 작성하면, 패키지 빌드에서 사용할 다양한 설정, 빌드 결과물에 대한 설정을 이용하게 된다.
이제 패키지 사용 설명서를 작성한다.
# Example Of Pandas Columns - this is sample of pandas columns
여기서는 단순하게 작성했다. 실제 프로젝트는 좀더 친절하게 작성해주자.
Copyright (c) 2022 Schooldevops ...
이제 필요한 패키징 파일을 다 작성했다. 빌드를 수행하여 패키지 파일을 생성하자.
빌드 모듈은 다음과 같이 설치하자. 우리는 build 를 설치할 것이다.
% python -m pip install --upgrade build
이제 프로젝트 디렉토리에 이동해서 다음 명령어를 실행하자.
% cd scdev_kit % python -m build
빌드를 수행하고 나면 다음 파일이 생성된다.
- scdev_kit - example_pkg_sdcev_pd_columns-0.0.1-py3-none-any.whl - example-pkg-sdcev-pd-columns-0.0.1.tar.gz
패키지 업로드를 위해서는 twine 패키지를 이용하여 업로드 하게 된다.
% python -m pip install --upgrade twine
위와 같이 설치한다.
이제 패키지를 PyPI 에 업로드 할 차례이다.
% python -m twine upload dist/* Uploading distributions to https://upload.pypi.org/legacy/ Enter your username: schooldevops Enter your password:
사용자 이름과 비밀번호를 입력하면 패키지가 업로드 된다.
Uploading example_pkg_sdcev_pd_columns-0.0.1-py3-none-any.whl
이제 자신의 로컬 PC에 패키지를 설치해보자.
패키지 설치시 패키지 이름은 우리가 setup.py 에 지정한 name 이름이다.
% python -m pip install --upgrade example-pkg-sdcev-pd-columns ...
설치가 된것을 확인해보자.
% python -m pip list | grep example example-pkg-sdcev-pd-columns 0.0.2
이제 우리가 생성하고 다운로드 및 설치한 패키지를 이용해보자.
특정 디렉토리를 만들고 test.py 파일을 만들고 다음과 같이 입력하자.
import pandas as pd from scdev_pd_column import example as ex def do_example(): data = {'Name': ['Tom', 'Joseph', 'Krish', 'John'], 'Age': [20, 21, 19, 18]} df = pd.DataFrame(data) print(df) colVal = ex.getColumn(df, 'Age') print(colVal) do_example()
패키지를 이용하기 위해서 scdev_pd_column import example as ex
로 패키지를 임포트 했다.
scdev_pd_column 은 우리가 만든 패키지(디렉토리) 이다.
모듈은 example 이다. 이를 단축 이름으로 쓰고자 as ex 라고 했다.
이후 ex.getColumn 메소드를 호출했다.
그리고 다음과 깉이 실해해보자.
% python test.py
결과는 다음과 같다.
python test.py Name Age 0 Tom 20 1 Joseph 21 2 Krish 19 3 John 18 Age 0 20 1 21 2 19 3 18
우리는 파이썬 패키지 생성예제를 따라하면서 패키지를 어떻게 생성하는지 알아보았다.
디렉토리 구조는 어떻게 작성하는지, 패키지 빌드를 위한 설정 파일 작성, 그리고 PyPI에 계정을 만들고, 업로드를 수행했다.
마지막으로 여트 파이썬 패키지처럼 install 하고 사용해 보았다.
이제 파이썬으로 자신만의 패키지를 만들고, 배포해보자~.