เริ่มต้นสร้างแพ็กเกจ

การพัฒนา Python Packages

James Fulton

Climate informatics researcher

ทำไมต้องสร้างแพ็กเกจ?

  • เพื่อให้โค้ดนำกลับมาใช้ซ้ำได้ง่ายขึ้น
  • เพื่อลดการคัดลอกโค้ดซ้ำๆ
  • เพื่อให้ฟังก์ชันเป็นเวอร์ชันล่าสุดอยู่เสมอ
  • เพื่อแชร์โค้ดให้ผู้อื่นใช้งาน
การพัฒนา Python Packages

เนื้อหาของคอร์ส

จะได้สร้างแพ็กเกจครบฉบับ ครอบคลุมหัวข้อต่อไปนี้:

  • โครงสร้างไฟล์
  • โครงสร้างการ import
  • การทำให้แพ็กเกจติดตั้งได้
  • การเพิ่มใบอนุญาตและ README
  • สไตล์โค้ดและการทดสอบเพื่อคุณภาพสูง
  • การลงทะเบียนและเผยแพร่แพ็กเกจบน PyPI
  • การใช้เทมเพลตแพ็กเกจ
การพัฒนา Python Packages

Script, Module และ Package

  • Script — ไฟล์ Python ที่รันด้วยคำสั่ง python myscript.py

  • Package — ไดเรกทอรีที่บรรจุโค้ด Python สำหรับ import

    • เช่น numpy
  • Subpackage — แพ็กเกจย่อยที่อยู่ภายในแพ็กเกจ

    • เช่น numpy.random และ numpy.linalg
  • Module — ไฟล์ Python ภายในแพ็กเกจที่เก็บโค้ดของแพ็กเกจ

    • เช่น ตัวอย่างในอีก 2 สไลด์ถัดไป
  • Library — แพ็กเกจเดียวหรือกลุ่มของแพ็กเกจ

    • เช่น Python standard library (math, os, datetime,...)
การพัฒนา Python Packages

โครงสร้างไดเรกทอรีของแพ็กเกจ

โครงสร้างไดเรกทอรีของแพ็กเกจอย่างง่าย

mysimplepackage/
|-- simplemodule.py
|-- __init__.py
  • ไดเรกทอรีชื่อ mysimplepackage นี้คือ Python Package
  • simplemodule.py เก็บโค้ดทั้งหมดของแพ็กเกจ
  • __init__.py บ่งบอกว่าไดเรกทอรีนี้คือแพ็กเกจ Python
การพัฒนา Python Packages

เนื้อหาของแพ็กเกจอย่างง่าย

__init__.py

ไฟล์ว่างเปล่า

simplemodule.py
def cool_function():
    ...
    return cool_result

...

def another_cool_function():
    ...
    return another_cool_result

ไฟล์ที่บรรจุฟังก์ชันและโค้ดที่ใช้งานทั่วไปได้

การพัฒนา Python Packages

Subpackage

โครงสร้างไดเรกทอรีของแพ็กเกจที่มี subpackage

mysklearn/
|-- __init__.py
|-- preprocessing
|   |-- __init__.py
|   |-- normalize.py
|   |-- standardize.py
|-- regression
|   |-- __init__.py
|   |-- regression.py
|-- utils.py
การพัฒนา Python Packages

มาฝึกกันเถอะ!

การพัฒนา Python Packages

Preparing Video For Download...