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.
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 envuntuk kalian pemakai linux dan macos
python3 -m venv envSetelah berhasil membuat virtual environtment, sekarang kita aktifkan virtual environtment dengan command dibawah ini :
ini untuk pemakai windows
.\env\Scripts\activateini untuk pemakai linux dan macos
source env/bin/activatePastikan session di terminal atau command promt kalian seperti gambar dibawah, yang menandakan virtual environtment sudah 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 setuptoolswheel adalah built-in-package, yang digunakan agar library tidak mengkompilasi ulang perangkat lunak selama setiap penginstalan
pip install wheeltwine adalah utilitas untuk mempublish package pada PyPI
pip install twineKalian 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.
Anbi disini bakal buat pakai visual studio code. Mari kita buat file dan folder yang dibutuhkan untuk :
Buat file kosong dengan nama setup.py. Ini adalah file penting ketika membuat sebuah library python.
Buat lagi file kosong dengan nama README.md. File ini nanti digunakan untuk mendeskripsikan tentang library yang kamu buat.
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 //pypi.org/.
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.
Pada folder yang sama (anbi_lib), kita buat file fungsiku.py.
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 :
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 pytestKode tersebut akan mengeksekusi semua “test case” pada folder test.
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_wheelWheel akan membuat menggenerate sebuah folder dist, dan disitulah library yang kamu buat berada.
Dan kamu bisa menginstall library yang sudah kamu baut tadi dengan perintah
pip install dist/nama_library_kalian.whlSELAMAT LIBRARY KAMU SUDAH TERINSTALL DAN SIAP DIGUNAKAN
Catatan : Kamu juga bisa mempublish library mu kedalam PyPi Repository dan menginstall nya lewat PIP.