Python 배포 파일 만들기

Hyunji·2022년 1월 12일
0

Python 패키지 배포

목록 보기
2/3

패키지 디렉토리 구조

py_test
|   LICENSE
|   MANIFEST.in
|   README.md
|   setup.cfg
|   setup.py
|
\---calc
    |   main.py
    |   util.py
    |   __init__.py
    |
    \---__pycache__
            util.cpython-39.pyc
            __init__.cpython-39.pyc

순서

  1. setuptools 라이브러리 설치

  2. setup.py

    setup.py을 통해 프로젝트의 최상위 디렉토리를 결정하고 빌드 설정을 한다.

    프로젝트 폴더를 만들면 최상위 폴더에 setup.py 파일을 둔다.

    python 프로젝트를 빌드하고 배포하려면 setup.py 작성해야 한다.

  3. README.md 파일

    내용 없어도 되지만 파일이 있어야 한다.

  4. 패키징 하려는 모듈

setup.py 작성

setuptools사용해 설정한다.

명령 프롬포트(cmd) 에서

pip install setuptools

setuptools import

import io
from setuptools import find_packages, setup

setup() 함수 작성

import io
from setuptools import find_packages, setup

setup(
    name="ex-pkg-calc",
    version="1.0.0",
    author="hyunji",
    author_email="hyun_jjj523@naver.com",
    description="Simple Calculation by Python",
    keywords=['test','calculate'],
    install_requires = [ ],
    packages=setuptools.find_packages(),
    classifiers=[ 
        "Programming Language :: Python :: 3", 
        "License :: OSI Approved :: MIT License", 
        "Operating System :: OS Independent",],
    python_requires='>=3.6',   
)

파라미터 설명

  • name = “프로젝트 이름”

    일반적으로 모듈명을 배포 파일명으로 사용한다.

    이 패키지를 설치/삭제할 때 사용할 이름을 의미한다. 이 이름과 import할 때 쓰이는 이름은 다르다.

  • version = “배포버전”

  • author = “저자”

  • author_email = “저자의 이메일”

  • description = “프로젝트 설명”

  • keywords

    해당 프로젝트 관련 키워드

  • python_requires

    지원하는 파이썬 버전 정보

  • install_requires

    패키지 내에서 import해서 사용하는 다른 라이브러리 패키지를 써 놓는 곳이다.

    여기에 써 놓으면 나중에 pip를 통해 다른 컴퓨터에 설치할 때, 써 놓은 패키지들은 자동으로 같이 설치가 된다.

  • package_data

    패키지 안에 .py 파일이 아닌 다른 파일을 더 포함 시키고 싶을 때 쓴다.

  • zip_safe

    위의 package_data 설정을 하였으면 zip_safe 설정도 해주어야 하며 False로 설정해주어야 한다.

  • classifiers

    PYPI에 등록될 메타 데이터 설정이다. 예를 들어 서포트 하는 python 버젼 정보를 명시할수 있다.\

    하지만 이건 PYPI에 등록될 메타 데이터일 뿐이고, 실제 빌드에는 영향을 주지 않는다.

  • packages

    업로드할 패키지들을 묶은 폴더명

    find_packages() 함수를 사용하여 package 디렉토리 아래에 있는 모든 패키지들을 포함한다.


Setup.cfg

만일 README 파일이 마크다운 형태로 되어 있다면 setup.cfg 파일을 아래와 같이 설정 해준다.

[metadata]
description-file = README.md

__init__.py

빈 내용의 파일

폴더 안에 __**init__**.py 파일이 있으면 해당 폴더는 패키지로 인식

→ 배포할 때 __**init__**.py없으면 배포 되지 않음

profile
ㅎㅇ

0개의 댓글