Cara menggunakan struktur package python

Nah kemarin sudah pernah anbi bahas perbedaan antara modul , package dan library. Sekarang ini anbi mau bahas cara membuat library python. Apa saja langkah - langkah nya? simak nih.


Langkah 1 : Buat Direktori


Buat direktori yang ingin kalian jadikan wadah buat library yang akan kita buat. Sesuaikan juga nama direktori dengan nama library yang akan kalian buat.

Disini anbi buat direktori dengan nama anbi-library.

Cara menggunakan struktur package python
Direktrori Untuk Nampung Library

Langkah 2 : Buat Virtual Environtment


Setelah selesai dengan pembuatan direktori, akan lebih baik jika kita juga membuat virtual environtment pada direktori agar versi python dan juga library lain yang kita gunakan tidak berubah.

Belajar Virtual Environtment

Kenapa harus pakai virtual environtment? Karena virtual environtment dapat mencegah adanya issue dependency yang terjadi nantinya.

Lalu, buka terminal atau cmd dan arahkan PATH ke direktori yang kita buat tadi. Untuk membuat virtual environtment kita gunakan command dibawah ini :

untuk kalian pemakai windows :

py -m venv env

untuk kalian pemakai linux dan macos

python3 -m venv env
Cara menggunakan struktur package python
Contoh Command Di Windows

Setelah berhasil membuat virtual environtment, sekarang kita aktifkan virtual environtment dengan command dibawah ini :

ini untuk pemakai windows

.\env\Scripts\activate

ini untuk pemakai linux dan macos

source env/bin/activate

Pastikan session di terminal atau command promt kalian seperti gambar dibawah, yang menandakan virtual environtment sudah aktif.

Cara menggunakan struktur package python
Session Virtual Environtment Udah AktifSession Virtual Environtment Udah Aktif

Langkah 3 : Install Library Bantuan


Tidak lupa kita install beberapa library bantuan untuk build library kita nanti.

  • setuptools adalah library yang didesain untuk memfasilitasi pemaketan proyek python dengan memberikan beberapa hal yang dibutuhkan untuk membuat library standar pada umumnya.

    pip install setuptools
    
  • wheel adalah built-in-package, yang digunakan agar library tidak mengkompilasi ulang perangkat lunak selama setiap penginstalan

    pip install wheel
    
  • twine adalah utilitas untuk mempublish package pada PyPI

    pip install twine
    
  • Kalian bisa menggunakan library pytest dan pytest-runner untuk nanti kita gunakan sebagai tester apakah kode pada library kita berjalan dengan baik atau tidak.

    pip install pytest
    
    pip install pytest-runner
    

Langkah 4 : Buat Struktur Folder


Buka folder direktori proyek yang kalian buat tadi, untuk nantinya kita tambahkan beberapa file dan folder. Kalian bisa menggunakan editor atau membuatnya secara manual.

Cara menggunakan struktur package python
Buka Folder Pakai Visual Studio Code

Anbi disini bakal buat pakai visual studio code. Mari kita buat file dan folder yang dibutuhkan untuk :

  1. Buat file kosong dengan nama setup.py. Ini adalah file penting ketika membuat sebuah library python.

  2. Buat lagi file kosong dengan nama README.md. File ini nanti digunakan untuk mendeskripsikan tentang library yang kamu buat.

  3. Buat folder kosong dan beri nama anbi_lib atau terserah kalian. Intinya nama ini yang akan dipanggil saat menginstall menggunakan PIP.

    Jika kalian ingin publish library kalian ke PIP, pastikan nama tersebut unik atau belum ada di https://pypi.org/.

  4. Didalam folder anbi_lib buat sebuah file constructor (__init__.py) agar ia diperlakukan sebagai package, dikosongin aja gapapa.

    Pada dasarnya, folder yang memiliki file constructor (__init___.py) akan ikut di build kedalam library.

  5. Pada folder yang sama (anbi_lib), kita buat file fungsiku.py.

  6. Dan terakhir, buat sebuah folder test pada folder root. Didalamnya, kita buat juga file constructor (__init__.py) dan file kosong test_fungsi.py.

Yep, harusnya struktur folder kalian akan seperti ini :

Cara menggunakan struktur package python
Struktur Folder anbi-library

Langkah 5 : Mulai Mengisi Librarymu!


Sekarang coba kita masukkan beberapa fungsi kedalam library kita. Kalian bisa mulai menulisnya pada file fungsiku.py.

Mari kita buat fungsi untuk menghitung berapa jarak antara 2 titik longitude dan latitude.

# fungsiku.py
import math

def getDistance(lat1, lon1, lat2, lon2) -> float:
   # radius bumi
   R = 6373.0

   # konversi dari derajat ke radian
   lat1, lon1 = math.radians(lat1), math.radians(lon1)
   lat2, lon2 = math.radians(lat2), math.radians(lon2)

   # perubahan koordinat
   dlon = lon2 - lon1
   dlat = lat2 - lat1

   # formula haversine
   a = math.sin(dlat / 2)**2 + math.cos(lat1) * math.cos(lat2) * math.sin(dlon / 2)**2
   c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))

   distance = R * c

   return distance

Setiap kali kalian selesai menulis sebuah kode program, sangat anbi sarankan untuk mengetest kodenya terlebih dahulu.

Mari kita buat test kecil - kecilan untuk fungsi yang kita buat tadi. Salin kode dibawah kedalam file test_fungsi.py :

from anbi_lib import fungsiku

def testFunction():
   assert fungsiku.getDistance(52.2296756, 21.0122287, 52.406374, 16.9251681) == 278.54558935106695


Langkah 6 : Konfigurasi Setup.py!


Selanjutnya kita akan mengkonfigurasi file setup.py sebelum membuild library kita. File setup.py biasanya diisi seperti ini :

from setuptools import find_packages, setup

setup(
    name='anbi_lib',
    packages=find_packages(),
    version='0.1.0',
    description='Test buat library python',
    author='alifianadexe',
    license='MIT',
)

Untuk isi variabel name kalian bisa isi sesuka kalian, tapi untuk memudahkan kita, samakan saja dengan nama folder package kita.


Setting package yang dibutuhkan untuk librarymu

Pada variabel package kalian dapat mengatur package mana saja yang mau digunakan pakai fungsi find_package(). Kalian include suatu package atau exclude paket yang tidak kalian butuhkan.

from setuptools import find_packages, setup

setup(
   name='anbi_lib',
   packages=find_packages(includes=['anbi_lib']),
   version='0.1.0',
   description='Test buat library python',
   author='alifianadexe',
   license='MIT',
)

Pada kode diatas, kita memasukkan package namapaket yang tadi kita buat pada parameter include. Pada dasarnya find_packages() bisa dikosongi tanpa harus memasukkan parameter apa - apa, tapi package yang tidak kita inginkan, juga akan masuk kedalam library kita (contoh : package test).


Setting library tambahan untuk librarymu

Jika kalian sering menginstall library dengan pip, biasanya dia tidak hanya menginstall satu library saja, bahkan bisa 3 sampai 4 library. Kenapa?

Ketika kita membuat sebuah program, tidak jarang juga kita perlu menggunakan library bantuan. Sama saat kita membuat sebuah library, kadang untuk melakukan sesuatu yang mungkin membutuhkan effort lebih, kita lebih suka untuk menggunakan bantuan dari library lain agar lebih efisien.

from setuptools import find_packages, setup

setup(
   name='anbi_lib',
   packages=find_packages(includes=['anbi_lib']),
   version='0.1.0',
   description='Test buat library python',
   author='alifianadexe',
   license='MIT',
   install_requires=[]
)

Pada kode diatas, terdapat parameter dengan nama install_requires, disitulah kita memasukkan daftar library bantuan yang kita gunakan untuk membuat library ini. Karena kita menggunakan library math yang sudah ada pada standard library python, kita tidak perlu memasukkan ke dalam daftar.


Test library

Apakah kalian ingat jika kita menginstall, sebuah library untuk testing? Tentu library ini bukan untuk kita masukkan ke install_requires.

Kita akan menggunakannya untuk mengetest apakah fungsi pada library kita akan berjalan dengan baik atau tidak, dengan beberapa “kasus” yang kita sediakan pada folder test.

from setuptools import find_packages, setup

setup(
   name='anbi_lib',
   packages=find_packages(includes=['anbi_lib']),
   version='0.1.0',
   description='Test buat library python',
   author='alifianadexe',
   license='MIT',
   install_requires=[],    
   setup_requires=['pytest-runner'],
   tests_require=['pytest'],
   test_suite='test',
)

Untuk mengetest library kita, gunakan perintah dibawah :

python setup.py pytest

Kode tersebut akan mengeksekusi semua “test case” pada folder test.

Cara menggunakan struktur package python
Fungsi Kita Berjalan Dengan Baik

Langkah 7 : Build Library


Semua kebutuhan sudah kita penuhi, sekarang hanya tinggal sedikit lagi, library yang kita buat akan selesai. Sekarang kita kembali ke command line, dan arahkan ke root folder library yang kita buat, lalu command:

python setup.py bdist_wheel

Wheel akan membuat menggenerate sebuah folder dist, dan disitulah library yang kamu buat berada.

Cara menggunakan struktur package python
File whl Pada Folder Dist

Dan kamu bisa menginstall library yang sudah kamu baut tadi dengan perintah

pip install dist/nama_library_kalian.whl
Cara menggunakan struktur package python
Library Kamu Berhasil Diinstall

SELAMAT LIBRARY KAMU SUDAH TERINSTALL DAN SIAP DIGUNAKAN

Catatan : Kamu juga bisa mempublish library mu kedalam PyPi Repository dan menginstall nya lewat PIP.

Apa itu package di Python?

Secara umum, packages bisa diartikan sebagai sekumpulan modul atau file Python yang ditulis dengan (.py). Adapun isi dari modul tersebut terdiri dari kumpulan fungsi, class, variabel, maupun kode-kode Python lainnya.

Library Python apa saja?

Macam-macam library python.
TensorFlow. ... .
2. NumPy. ... .
3. SciPy. ... .
Pandas. ... .
Matplotlib. ... .
6. Keras. ... .
7. SciKit-Learn. ... .
PyTorch..

Apakah fungsi dari import dalam Python?

import digunakan untuk mengimpor sebagaian isi modul dan bukan keseluruhan isi modul. Bila kita menggunakan format import *, maka semua isi modul akan dimuat. Bedanya dengan format import standar adalah di sini kita dapat menggunakan semua isi modul tanpa menggunakan operator titik.

Apa itu namespace pada Python?

Sebuah namespace adalah pemetaan dari nama ke objek. Sebagian besar ruang nama namespace saat ini diimplementasikan sebagai kamus dictionary Python, tetapi itu biasanya tidak terlihat dengan cara apa pun (kecuali untuk kinerja), dan itu mungkin berubah di masa depan.