🪴 Daily gardening

Search

Search IconIcon to open search

Python Project package PyPi에 올리기

Last updated Mar 19, 2023

# pip 설치

1
python3 -m pip install --upgrade pip
1
py -m pip install --upgrade pip

# Project 생성

간단한 프로젝트 packaging_tutorial 다음과 같은 구성으로 준비한다.

1
2
3
4
5
packaging_tutorial/ 
└── src/
    └── example_package_cheese/
        ├── __init__.py
        └── example.py
1
2
def add_one(number):
    return number + 1

# Package Files 생성

1
2
3
4
5
6
7
8
9
packaging_tutorial/
├── LICENSE
├── pyproject.toml
├── README.md
├── src/
│   └── example_package_YOUR_USERNAME_HERE/
│       ├── __init__.py
│       └── example.py
└── tests/
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# Hatchlling
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

# setuptools
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

# filt
[build-system]
requires = ["flit_core>=3.4"]
build-backend = "flit_core.buildapi"

# pyproject.toml 에 metadata 작성하기

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
[project]
name = "example_package_YOUR_USERNAME_HERE"
version = "0.0.1"
authors = [
  { name="Example Author", email="author@example.com" },
]
description = "A small example package"
readme = "README.md"
requires-python = ">=3.7"
classifiers = [
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
]

[project.urls]
"Homepage" = "https://github.com/pypa/sampleproject"
"Bug Tracker" = "https://github.com/pypa/sampleproject/issues"

# 패키지 빌드하기

pip build를 위하여 PyPA build 설치

1
2
3
4
5
# Unix/mac OS
py -m pip install --upgrade build

# Windows
python3 -m pip install --upgrade build

위에 작성한 pyproject.toml 파일 위치에서 아래 커맨드로 빌드하기

1
2
3
4
5
# Unix/mac OS
python3 -m build

# Windows
py -m build

빌드하고 나면 아래와 같이 /dist directory가 생성된다.

1
2
3
dist/
├── example_package_YOUR_USERNAME_HERE-0.0.1-py3-none-any.whl
└── example_package_YOUR_USERNAME_HERE-0.0.1.tar.gz

# 패키지 업로드하기

업로드 하기 위하여 twine 을 먼저 설치

1
2
3
4
5
# Unix/macOS
python3 -m pip install --upgrade twine

# Windows
py -m pip install --upgrade twine

twine 이용하여 아래와 같이 업로드 할 수 있다.

1
2
3
4
5
# Unix/macOS
python3 -m twine upload --repository testpypi dist/*

# Windows
py -m twine upload --repository testpypi dist/*

이 과정에서 username과 password를 입력하도록 되어있는데,

예시 : https://test.pypi.org/project/cheese-package/0.1.0/

# 패키지 설치하기

1
2
3
4
5
# Unix/macOS
python3 -m pip install --index-url https://test.pypi.org/simple/ --no-deps example-package-YOUR-USERNAME-HERE

# Windows
py -m pip install --index-url https://test.pypi.org/simple/ --no-deps example-package-YOUR-USERNAME-HERE
1
2
3
from example_package_YOUR_USERNAME_HERE import example

example.add_one(2)

# pypi.org 에 업로드하기

# References