Python มีวิธีง่ายๆ ในการสร้างและเผยแพร่ Package
เครื่องมือ Package Management
- Pip: ตัวจัดการแพ็กเกจหลัก กำจัดการติดตั้ง Manual จัดการรายการแพ็กเกจและเวอร์ชัน
- Python Package Index (PyPI): Public Repository ติดตั้งได้ด้วย
pip install package_name
ขั้นตอนการสร้างและเผยแพร่ Package
Step 1: เตรียม Package
# 1. สร้างไฟล์ Python โค้ดของคุณ เช่น mypackage.py # 2. สร้างโฟลเดอร์ package และเพิ่ม __init__.py mkdir mypackage touch mypackage/__init__.py # 3. ย้ายโค้ดเข้าไป mv mypackage.py mypackage/
Step 2: ใช้ Sample Project Template
git clone https://github.com/pypa/sampleproject mypackage
โครงสร้างไฟล์สำคัญ
mypackage/ ├── LICENSE.txt ├── README.md ├── setup.py ├── setup.cfg ├── pyproject.toml ├── mypackage/ │ ├── __init__.py │ └── module.py └── tests/
Step 3: กำหนดค่าใน setup.py
import setuptools
with open("README.md", "r", encoding="utf-8") as fh:
long_description = fh.read()
setuptools.setup(
name="mypackage",
version="0.0.1",
author="Your Name",
author_email="you@example.com",
description="Short description",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/yourusername/mypackage",
packages=setuptools.find_packages(),
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
python_requires=">=3.6",
install_requires=[
"requests>=2.25.0",
],
)
Step 4: สร้าง Distribution Files
# ติดตั้งเครื่องมือ pip install --upgrade setuptools wheel twine # สร้าง Source Distribution (sdist) python setup.py sdist # สร้าง Wheel Distribution (bdist_wheel) - ติดตั้งเร็วกว่า python setup.py bdist_wheel
ไฟล์จะอยู่ในโฟลเดอร์ dist/
Step 5: ทดสอบติดตั้งใน Local
# สร้าง Virtual Environment ใหม่ python -m venv test_env source test_env/bin/activate # Linux/Mac # test_env\Scripts\activate # Windows # ติดตั้งจากไฟล์ .tar.gz pip install dist/mypackage-0.0.1.tar.gz # ตรวจสอบ pip list
Step 6: เผยแพร่ขึ้น PyPI
# ตรวจสอบไฟล์ก่อนอัปโหลด twine check dist/* # อัปโหลดไป TestPyPI ก่อน (แนะนำ) twine upload --repository testpypi dist/* # อัปโหลดไป PyRI จริง twine upload dist/*
จะถูกขอ Username/Password ของ PyPI Account
ไฟล์สำคัญอื่นๆ
README.md: คำอธิบายโปรเจกต์ (Markdown)LICENSE.txt: License (MIT, Apache 2.0, GPL, ฯลฯ)MANIFEST.in: ระบุไฟล์เพิ่มเติมที่ต้องรวมใน sdistpyproject.toml: Build System Configuration (Modern Standard)