Pada seri Belajar Python part 8, kita telah mempelajari cara membuat aplikasi Python sederhana. Namun, sebuah aplikasi tidak hanya berhenti pada tahap pembuatan saja. Agar aplikasi tersebut dapat digunakan atau dibagikan kepada orang lain, diperlukan proses packaging dan distribusi yang tepat.
Dalam seri belajar Python part 9 ini, kita akan membahas konsep packaging dan distribusi pada aplikasi Python, mulai dari tujuan, manfaatnya, hingga bagaimana cara mengemas aplikasi Python agar siap dibagikan dan dijalankan di lingkungan lain. Dengan memahami materi ini, Anda selangkah lebih maju dalam mengembangkan aplikasi Python yang rapi, terstruktur, dan siap digunakan oleh pengguna lain.
Apa itu Packaging dalam Python?
Packaging dalam Python adalah proses mengemas kode program beserta seluruh dependensi yang dibutuhkan ke dalam satu paket yang siap diinstal. Dengan proses ini, pengguna aplikasi tidak perlu lagi melakukan instalasi library satu per satu atau mengatur environment secara manual.
Melalui packaging, aplikasi Python dapat didistribusikan dengan lebih rapi, konsisten, dan minim kesalahan. Selain memudahkan proses instalasi, packaging juga membantu memastikan aplikasi dapat berjalan dengan baik di berbagai lingkungan sistem yang berbeda.
Struktur Proyek Python
Sebelum melakukan packaging, hal yang penting dilakukan yaitu memastikan folder aplikasi telah terstruktur dengan baik. Struktur yang baik mencakup penamaan file yang jelas dan konsisten serta penempatan file yang terorganisir. Contoh struktur proyek Python yang umum digunakan adalah sebagai berikut:

Keterangan:
- myapp/: folder utama proyek
- init.py: penanda package Python
- tests/: berisi file pengujian
- README.md: dokumentasi aplikasi
- requirements.txt: daftar dependensi
- setup.py: konfigurasi packaging
Membuat File requirements.txt
File requirements.txt penting pada tahap deployment aplikasi, karena dengan adanya requirements yang tepat saat distribusi aplikasi menggunakan environment yang konsisten serta digunakan untuk mendefinisikan library apa saja yang dibutuhkan aplikasi.
Contoh isi requirements.txt
- Flask>=2.3.0
- requests>=2.28.0
- pandas>=1.5.3
Generate otomatis dari environment
Jika Anda ingin melakukan generate otomatis file requirements.txt dari semua library Python yang terinstall di environment Anda saat ini, dapat menjalankan perintah berikut:
pip freeze > requirements.txtInstall dependensi
Anda juga dapat menginstal semua library Python yang ada di file requirements.txt dengan menjalankan perintah berikut.
pip install -r requirements.txtMembuat File setup.py
File setup.py perlu dibuat dengan tujuan sebagai konfigurasi utama saat proses packaging. Berikut contoh sederhana setup.py yang dapat dibuat:
from setuptools import setup, find_packages
setup(
name="myapp",
version="1.0.0",
packages=find_packages(),
python_requires=">=3.7",
install_requires=[
"Flask>=2.3.0",
"requests>=2.28.0",
],
)Keterangan parameter:
- name: nama package
- version: versi aplikasi
- packages: package yang akan disertakan
- install_requires: dependensi aplikasi
Build dan Instalasi Package
Selanjutnya, kita akan membuat package yang akan membungkus aplikasi sebelum didistribusikan nantinya, dengan tahapan berikut.
1. Instal tools yang dibutuhkan
pip install setuptools wheel2. Build package
python setup.py sdist bdist_wheelHasil build akan tersimpan pada folder dist/.
3. Instal package secara lokal
pip install .Note: Jangan lupa menyertakan tanda titik (.) untuk mendefinisikan direktori saat ini.
Distribusi Package ke PyPI
PyPI (Python Package Index) adalah repository resmi untuk package Python yang digunakan oleh para developer untuk mempublikasikan dan berbagi library atau aplikasi Python. Dengan mengunggah package ke PyPI, pengguna lain dapat menginstalnya dengan mudah hanya melalui perintah pip install nama-package, sama seperti saat menginstal package populer seperti Flask, requests, atau pandas.
Berikut adalah langkah-langkah pembuatan dan publikasi package Python ke PyPI:
Step 1. Buat akun di PyPI
Untuk membuat akun di PyPI, kunjungi website resminya di https://pypi.org dan klik tombol “Register” atau “Sign Up” di pojok kanan atas halaman. Selanjutnya, Anda dapat menyelesaikan langkah pendaftaran yang dibutuhkan.
Step 2. Jalankan Instal twine
Selanjutnya, kembali ke terminal Python untuk melanjutkan pembuatan package di PyPi. Berikut contoh perntahnya:
pip install twineStep 3. Upload package
twine upload dist/*Step 4. Install package
pip install myappAlternatif Distribusi Aplikasi
Selain PyPI, terdapat beberapa metode lain untuk mendistribusikan aplikasi Python:
1. PyInstaller
PyInstaller digunakan untuk membuat file executable (.exe) sehingga aplikasi dapat dijalankan tanpa Python terinstal. Metode ini cocok untuk mendistribusikan aplikasi desktop ke end-user non-teknis yang tidak memiliki Python di sistemnya, karena semua dependencies dan interpreter Python sudah di bundle menjadi satu file executable yang siap pakai seperti aplikasi lain pada umumnya.
Perintah PyInstaller yang digunakan sebagai berikut.
pyinstaller --onefile myapp/main.py2. Docker
Docker sebagai distribusi aplikasi yang cocok untuk aplikasi yang membutuhkan environment konsisten. Misalnya seperti aplikasi microservices, web applications atau aplikasi yang membutuhkan deploy ke server atau cloud. Perintah yang dapat digunakan sebagai berikut.
docker build -t myapp:1.0 .docker run myapp:1.0Contoh Pembuatan Package Python Sederhana
Untuk memperjelas konsep packaging di seri belajar Python, berikut contoh pembuatan package sederhana dengan aplikasi kalkulator.
1. Struktur Proyek
Pada contoh pembuatan aplikasi kalkulator sederhana, kita akan membuat struktur folder seperti berikut:

2. File calculator/operations.py
Selanjutnya, kita akan membuat file yang memuat fungsi atau rumus yang akan dijalankan pada operasi kalkulator.
"""Module untuk operasi matematika dasar"""
def tambah(a, b):
"""Menambahkan dua angka"""
return a + b
def kurang(a, b):
"""Mengurangi dua angka"""
return a - b
def kali(a, b):
"""Mengalikan dua angka"""
return a * b
def bagi(a, b):
"""Membagi dua angka"""
if b == 0:
raise ValueError("Tidak dapat membagi dengan nol")
return a / b3. File calculator/init.py
"""Calculator Package"""
__version__ = "1.0.0"
from .operations import tambah, kurang, kali, bagi
__all__ = ['tambah', 'kurang', 'kali', 'bagi']4. File setup.py
from setuptools import setup, find_packages
setup(
name="calculator-app",
version="1.0.0",
author="Nama Anda",
author_email="email@example.com",
description="Package kalkulator sederhana",
packages=find_packages(),
python_requires=">=3.7",
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
],
)5. Build dan Install
# Build package
python setup.py sdist bdist_wheel
# Install lokal
pip install .
# Test import
python -c "from calculator import tambah; print(tambah(5, 3))"Distribusi untuk Berbagai Platform
Berikut adalah beberapa distribusi untuk berbagi platform di aplikasi Python.
Windows
Menggunakan PyInstaller
pyinstaller --onefile --windowed myapp.pyLinux
Membuat .deb package
python setup.py --command-packages=stdeb.command bdist_debmacOS
Menggunakan py2app
python setup.py py2appPenutup
Packaging dan distribusi dalam Python merupakan skill yang perlu dikuasai, sehingga Anda tidak hanya bisa membuat aplikasi Python namun juga dapat membagikan aplikasi Python secara profesional.
Dalam sesi belajar Python Part 10 nanti, kita akan melanjutkan pembahasan dengan topik yang lebih lanjut, yaitu testing dan debugging aplikasi Python untuk memastikan aplikasi berjalan dengan stabil.
Tetap ikuti seri belajar Python agar Anda semakin mahir mengembangkan aplikasi berbasis Python secara profesional. Selamat mencoba 🙂


