Rumahweb Journal
Banner - Belajar Python Part 9

Belajar Python Part 9: Packaging dan Distribusi Pada Python

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:

struktur folder python - belajar python

Keterangan:

Promo Hosting Murah Rumahweb

  • 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.txt

Install dependensi

Anda juga dapat menginstal semua library Python yang ada di file requirements.txt dengan menjalankan perintah berikut.

pip install -r requirements.txt

Membuat 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 wheel

2. Build package

python setup.py sdist bdist_wheel

Hasil 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 twine

Step 3. Upload package

twine upload dist/*

Step 4. Install package

pip install myapp

Alternatif 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.py

2. 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.0

Contoh 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:

contoh struktur folder sederhana

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 / b

3. 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.py

Linux

Membuat .deb package

python setup.py --command-packages=stdeb.command bdist_deb

macOS

Menggunakan py2app

python setup.py py2app

Penutup

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 🙂

Bermanfaatkah Artikel Ini?

Klik bintang 5 untuk rating!

Rating rata-rata 0 / 5. Vote count: 0

Belum ada vote hingga saat ini!

Kami mohon maaf artikel ini kurang berguna untuk Anda!

Mari kita perbaiki artikel ini!

Beri tahu kami bagaimana kami dapat meningkatkan artikel ini?

Amiratur Rafifah

Amiratur Rafifah, atau yang akrab dipanggil Fifah, adalah seorang staf technical support di Rumahweb Indonesia dengan passion besar di dunia pendidikan, teknologi, dan kreativitas. Melalui Journal Rumahweb, Fifah ingin berbagi insight dan solusi teknis, dengan fokus pada penggunaan dan pengembangan Python di lingkungan hosting.

banner pop up - Pindah Hosting ke Rumahweb