Langsung ke konten utama

Tutorial Pemula untuk Menerbitkan Paket Python ke PyPI


Pada tutorial ini, kita akan mencoba untuk mengupload package yang kita buat ke PyPi (Python Package Index). Jika kalian sudah sering menggunakan python, kalian pasti tidak asing dengan perintah pip install saat akan menginstall library pada python. 

A. Apa itu PyPi
Python Package Index (PyPi) adalah repositori perangkat lunak untuk bahasa pemrograman python. PyPi berfungsi sebagai tempat penyimpanan sentral untuk paket python yang dapat diunduh dan diinstall menggunakan package manager seperti pip.

B. Persiapan
Sebelum kita dapat mempublikasikan paket kita ke PyPi, ada beberapa persiapan yang perlu kita lakukan terlebih dahulu.
  • Membuat akun PyPi
Jika kalian belum memiliki akun PyPi, kalian bisa melakukan registrasi di https://test.pypi.org/account/register/.
  • Membuat/mempersiapkan paket yang ingin di publikasi
Jika kalian telah berhasil membuat akun atau sudah memiliki akun, hal berikutnya yang perlu disiapkan adalah paket yang akan di publikasi. Berikut struktur paket yang direkomendasikan


  • Memilih Backend untuk Pembangunan Proyek Python
Dalam proses pembangunan proyek python, alat seperti pip dan build tidak secara langsung mengubah kode sumber menjadi sebuah paket distribusi (seperti wheel). Tugas tersebut dilakukan oleh backend pembangunan. Backend ini menentukan bagaimana proyek anda akan menentukan konfigurasinya, termasuk metadata(informasi tentang proyek, seperti nama dan tag yang ditampilkan di PyPi) dan file input.

Backend pembangunan memiliki tingkat fungsionalitas yang berbeda-beda, seperti apakah mereka mendukung pembangunan module extensi. Oleh karena itu, penting untuk memilih backend yang sesuai dengan kebutuhan dan preferensi anda.

Ada beberapa backend yang bisa dipilih; namun, pada tutorial ini kita akan menggunakan Hatching secara default, tapi cara kerjanya akan sama dengan Setuptools, Flit, PDM, dan lainnya yang mendukung table [Project] untuk metadata.





File pyproject.toml memberitahu alat frontend build seperti pip dan build, mengenai backend mana yang akan digunakan untuk proyek anda. Berikut adalah beberapa contoh untuk backend umum, namun kami sarankan untuk memeriksa dokumentasi backend anda sendiri untuk detail lebih lanjut.

  • requires: Daftar paket yang dibutuhkan untuk membangun paket anda. Frontend akan menginstalnya secara otomatis saat membangun paket anda. Frontend biasanya menjalankan build dalam lingkungan terisolasi, jadi jika tidak memasukkan dependensi disini, kemungkinan akan meyebabkan error saat proses build. 
  • build-backend: Nama objek python yang akan digunakan frontend untuk melakukan build.
Kedua nilai ini akan disediakan oleh dokumentasi untuk backend-build anda, atau dihasilkan oleh antarmuka baris perintahnya. Anda tidak perlu mengubah pengaturan ini secara manual.

Komfigurasi tambahan dari alat build akan berada dibagian tool pada file pyproject.toml atau di dalam file khusus yang ditentukan oleh alat build. Misalnya, saat menggunakan setuptools sebagai backend-build, konfigurasi tambahan dapat ditambahkan pada file setup.py atau setup.cfg, dan menentukan setuptools.build_meta dalam build anda memungkinkan alat untuk menemukan dan menggunakannya secara otomatis.

 

  • Konfigurasi Metadata

Buka file pyproject.toml dan tambahkan konten berikut. Ganti kata your_username dengan nama pengguna anda sendiri. Ini memastikan bahwa nama paket anda unik dan tidak bentrok dengan paket yang diunggah oleh orang lain yang mengikuti tutorial ini.

  • name: adalah nama distribusi paket anda.
  • version: adalah versi paket. (Beberapa backend-build memungkinkan anda menentukan versi dengan cara lain, seperti dari file atau tag git).
  • author: Digunakan untuk mengidentifikasi author paket; Anda perlu menentukan nama dan email untuk setiap author. Anda juga dapat mencantumkan maintener dalam format yang sama.
  • description: Adalah ringkasan singkat yang terdiri dari satu kalimat mengenai paket tersebut.
  • readme: Adalah path file yang berisi deskripsi paket yang lebih rinci. Deskripsi ini akan ditampilkan pada halaman detail paket di PyPi. Dalam kasus ini, deskripsi dimuat dari file README.md (yang merupakan pola umum). Ada juga bentuk tabel yang lebih canggih, yang dijelaskan dalam panduan pyproject.toml.
  • requires-python: Memberikan versi python yang didukung oleh proyek anda. Installer seperti pip akan melihat kembali versi paket yang lebih lama hingga menemukan versi yang cocok dengan versi python.
  • classifier: Memberikan indeks dan pip beberapa metadata tambahan tentang paket anda. Dalam kasus ini, paket hanya kompatibel dengan python 3, dilisensi di bawah lisensi MIT, dan tidak bergantung pada sistem operasi (OS-independent). Anda harus selalu menyertakan setidaknya versi python yang mendukung paket anda, lisensi yang tersedia untuk paket anda, dan sistem operasi yang dapat menjalankan paket anda. Untuk informasi lebih lengkap mengenai classifier dapat diilihat pada https://pypi.org/classifiers/ .
  • url: memungkinkan anda mencantumkan sejumlah tautan tambahan untuk ditampilkan di PyPi. Umumnya, ini bisa berupa tautan ke sumber kode, dokumentasi, issue tracker, dan lain-lain.

 Untuk informasi lebih lanjut, silahkan kunjungi panduan pyproject.toml.

  •  Membuat README.md

Silahkan buka file README.md dan masukkan konten berikut. Anda juga dapat menyesuaikan isi konten sesuai keinginan anda.


  • Membuat Lisensi

Sangat penting bagi sebuah paket yang diunggah ke Python Package Index(PyPI) untuk menyertakan lisensi. Lisensi ini memberitahu pengguna yang menginstall paket anda mengenai ketentuan penggunaan paket tersebut. Untuk mendapatkan bantuan dalam memilih lisensi, anda dapat mengunjungi situs https://choosealicense.com/. Setelah anda memilih lisensi, buka file LICENSE dan masukkan teks lisensi tersebut. Contohnya, jika anda memilih lisensi MIT:

Sebagian besar backend-build akan secara otomatis menyertakan file LICENSE di dalam paket. Untuk detail informasi, anda dapat merujuk ke dokumentasi backend-build yang anda gunakan.

  • Menyertakan File-File Lainnya

File-file yang disebutkan di atas akan disertakan secara otomatis ke dalam distribusi sumber anda. Jika anda ingin menyertakan file-file tambahan, silahkan lihat dokumentasi backend yang anda gunakan.


  • Membuat Arsip Distribusi
Langkah selanjutnya adalah membuat arsip distribusi untuk paket anda. Ini adalah file terkommpresi yang diunggah ke Python Package Index(PyPI) dan dapat diinstal mengggunakan pip. Sebelum melanjutkan, pastikan anda memiliki versi terbaru dari build PyPA yang terpasang:

MacOS/Unix


Windows


Sekarang jalankan perintah berikut ini dari direktori yang sama tempat file pyproject.toml berada:

MacOS/Unix


Windows


Perintah tersebut akan menghasilkan banyak teks dan setelah selesai, akan menghasilkan dua file di direktori disk:

Untuk menerbitkan paket python ke PyPI, anda harus membuat dua jenis arsip distribusi: arsip sumber (.tar.gz) dan arsip yang sudah dibangun(.whl).Arsip sumber dapat diinstall dengan pip, tetapi versi pip yang lebih baru akan secara otomatis memilih untuk menginstall arsip yang sudah dibangun jika tersedia.


    
    • Upload paket dengan perintah 

    • Masukkan nama pengguna dan token API saat diminta.
    • Setelah perintah selesai, anda akan melihat output yang mirip dengan ini:



Komentar

Postingan populer dari blog ini

Konversi Data JSON ke YAML dengan Python

Halo semua, pada sesi kali ini saya ingin berbagi tutorial sederhana tentang cara mengubah data JSON menjadi YAML. Pada tutorial ini, saya akan menggunakan python dan library bernama FormatFusion. FormatFusion adalah sebuah library/package python yang berfungsi untuk mengkonversi data, untuk lebih detailnya anda bisa mengunjungi website  https://pypi.org/project/FormatFusion/ . Sebelum kita memulai tutorial ini, penting untuk mengetahui apa itu json dan yaml. JSON JSON adalah singkatan dari Javascript Object Notation, ini adalah format pertukaran data yang ringan dan banyak digunakan untuk mengirimkan data antar komputer. Anggap saja sebagai bahasa agar komputer dapat berbicara satu sama lain dengan cara yang mudah dipahami dan efisien untuk dikirimkan. Berikut adalah beberapa hal yang perlu diketahui tentang json: human-readable: Artinya dapat dibaca oleh manusia. Json ditulis dalam plaintext, sehingga mudah dibaca dan dipahami manusia, bahkan bagi mereka yang tidak mengetahui pem...

Cara Mengatasi Error saat Upload Projek Codeigniter ke Web Server

Halo semua, apa kabar ? Semoga kita selalu dalam keadaan sehat, bahagia, dan banyak rezeki, Amin. Hari ini izinkan saya untuk sedikit sharing tentang cara mengatasi error saat kita sedang mengupload projek website kita ke web server. Dalam kasus ini projek website dibuat dengan menggunakan codeigniter. Pada saat akan mengupload website yang telah kita buat ke web server kita terkadang dihadapkan dengan permasalahan seperti terjadi error walaupun pada saat kita jalankan di localhost semuanya berjalan lancar seperti pada gambar di bawah ini. Terkadang kita sering menghadapi masalah seperti pada gambar di atas pada saat mengupload projek kita ke web server. Untuk mengatasi  permasalahan seperti ini sebenarnya cukup mudah. Salah satu cara mengatasinya adalah dengan cara menambahkan ob_start(); setelah kode <?php pada file index.php. Dengan menambahkan kode tersebut error akan hilang dengan sendirinya dan web projek kalian bisa berjalan seperti biasanya. Baiklah sekian...