Cara mengelola proyek Python dengan Pipenv

Ekosistem paket Python memungkinkan Anda memanfaatkan pekerjaan jutaan pengembang lain dengan pip installperintah sederhana . Lingkungan virtual Python memungkinkan Anda mengisolasi proyek dan paketnya satu sama lain.

Tetapi menyulap lingkungan dan paket secara terpisah bisa jadi berat. Jadi ganda jika proyek Anda memiliki persyaratan paket khusus, dan Anda ingin fokus pada pengembangan daripada pemeliharaan. Yang kita butuhkan adalah cara untuk mengelola lingkungan dan paket bersama-sama. 

Pipenv menggulung pengelolaan lingkungan virtual Python dan paket Python ke dalam satu alat. Pipenv memastikan bahwa setiap proyek menggunakan versi yang benar dari setiap paket yang dibutuhkannya, dan setiap paket tersebut memiliki dependensi yang benar juga.

Lebih lanjut, Pipenv membuat daftar dependensi proyek Anda yang dapat berjalan dengannya, memungkinkan pengguna atau pengembang lain untuk menyiapkan proyek yang sama dengan cara yang sama. Pengguna lain juga perlu menginstal Pipenv untuk menyiapkan proyek yang dikelola Pipenv dengan benar, tetapi untungnya, menginstal dan menggunakan Pipenv sangatlah mudah. 

Bagaimana Pipenv bekerja

Biasanya ketika Anda membuat proyek Python dan menggunakan lingkungan virtual untuk paketnya, Anda ditugaskan untuk membuat lingkungan virtual sendiri (menggunakan perintah  py -m venv), menginstal dependensi ke dalamnya, dan melacak dependensi secara manual.

Pipenv menyediakan cara untuk melakukan semua ini secara semi-otomatis. Lingkungan virtual untuk proyek Anda dibuat dan dikelola untuk Anda saat Anda menginstal paket melalui antarmuka baris perintah Pipenv. Dependensi dilacak dan dikunci, dan Anda dapat mengelola dependensi pengembangan dan runtime secara terpisah. Anda juga dapat bermigrasi dari requirements.txtfile lama yang ada , jadi Anda tidak perlu membongkar proyek Anda dan memulainya dari awal untuk menggunakan Pipenv dengan baik.

Perhatikan bahwa tidak seperti alat manajemen proyek Python lainnya (seperti Puisi), Pipenv tidak mengelola "perancah" proyek Anda. Artinya, Pipenv tidak membuat struktur internal direktori proyek dengan pengujian tiruan, stub dokumentasi, dll., Tetapi berfokus terutama pada manajemen paket dan lingkungan. Ini menjadikan Pipenv pilihan yang baik jika Anda hanya ingin alat untuk fokus pada lingkungan dan paket virtual, dan bukan solusi all-in-one.

Mulailah dengan Pipenv

Pipenv menginstal dengan cara yang sama seperti kebanyakan paket lain Python: pip install --user pipenv. The --useropsi dianjurkan untuk menjaga Pipenv dari bertentangan dengan seluruh sistem paket lain. Anda juga harus menambahkan jalur ke direktori biner basis pengguna ke jalur sistem, sehingga perintah Pipenv dirutekan ke tempat yang tepat.

Jika Anda berencana menjadikan Pipenv sebagai bagian yang konsisten dari alur kerja Anda, ada baiknya juga untuk menjaga instalasi Python Anda seminimal mungkin. Saran itu berlaku untuk sebagian besar instalasi Python yang menggunakan lingkungan virtual.

Siapkan proyek baru dengan Pipenv

Untuk memulai proyek yang benar-benar baru dengan Pipenv, cukup buat direktori dan isi dengan file yang biasanya Anda buat untuk sebuah proyek. Jika Anda cenderung membuat proyek scaffold saat Anda pergi, Anda bisa mulai dengan direktori kosong.

Menginstal paket untuk sebuah proyek tidak jauh berbeda dengan Pipenv dibandingkan dengan Pip; sebenarnya, sintaksnya hampir sama. Buka konsol di direktori proyek Anda dan ketik pipenv install untuk menginstal paket untuk proyek tersebut. Untuk menentukan bahwa paket tersebut untuk pengembangan , gunakan -dtanda. Anda dapat menggunakan pip sintaks untuk menunjukkan versi tertentu dari sebuah paket (mis., black==13.0b1).

Saat Anda menginstal paket dengan Pipenv, dua hal terjadi. Pertama, Pipenv akan memeriksa apakah lingkungan virtual telah dibuat untuk direktori proyek ini. Jika ya, Pipenv akan menginstal paket ke lingkungan virtual yang ada. Jika tidak, Pipenv akan membuat lingkungan virtual yang menggunakan edisi Python yang sama yang digunakan untuk menjalankan Pipenv. Perhatikan bahwa lingkungan virtual tidak dibuat di direktori proyek itu sendiri; itu dibuat dalam direktori yang dikelola oleh Pipenv di profil pengguna Anda.

Kedua, Pipenv akan menginstal paket yang diminta ke lingkungan virtual. Ketika penginstalan selesai, Pipenv akan melaporkan kembali semua yang dilakukannya, termasuk jalur ke lingkungan virtual jika harus membuatnya.

Anda biasanya tidak perlu mengetahui jalur ke lingkungan virtual yang dibuat Pipenv. Untuk mengaktifkan lingkungan, cukup buka direktori proyek Anda dan gunakan  pipenv shelluntuk meluncurkan sesi shell baru atau gunakan  pipenv run untuk menjalankan perintah secara langsung. Misalnya, gunakan  pipenv run mypyuntuk menjalankan versi alat baris perintah mypy(dengan asumsi mypyalat dipasang di lingkungan virtual), atau pipenv run python -m untuk menjalankan modul Python yang tersedia di lingkungan virtual.

Pipenv dan file kunci

Mengintip ke dalam direktori setelah Anda menginstal paket dengan Pipenv, dan Anda akan melihat dua file, Pipfiledan Pipfile.lock. Keduanya dibuat secara otomatis oleh Pipenv, dan tidak boleh diedit secara langsung, karena keduanya menjelaskan status paket dalam proyek.

Pipfileadalah yang lebih sederhana dari keduanya. Itu hanya mencantumkan paket yang diperlukan untuk proyek, dari mana mereka diinstal (defaultnya adalah PyPI), dan versi Python mana yang diperlukan untuk menjalankan semuanya. Pipfile.locklebih kompleks. Ini mencantumkan setiap paket bersama dengan detail versi dan hash SHA-256 yang dihasilkan dari paket. Hash digunakan untuk memastikan bahwa paket yang diinstal sama persis dengan yang ditentukan - bukan hanya nomor versi, tetapi juga konten yang diperoleh.

Saat Anda mengerjakan proyek yang menggunakan Pipenv untuk manajemen paket, Anda akan ingin menambahkan Pipfiledan Pipfile.lockfile ke repositori kontrol versi untuk proyek tersebut. Setiap perubahan yang dilakukan pada paket untuk proyek Anda pada gilirannya akan mengubah file-file itu, jadi perubahan itu harus dilacak dan diversi.

Gunakan proyek Pipenv

Jika Anda mendownload repositori sumber untuk sebuah proyek yang menggunakan Pipenv untuk manajemen paket, yang perlu Anda lakukan hanyalah mengekstrak konten repositori ke dalam direktori dan menjalankannya pipenv install(tidak diperlukan nama paket). Pipenv akan membaca file Pipfiledan Pipfile.lockuntuk proyek tersebut, membuat lingkungan virtual, dan menginstal semua dependensi sesuai kebutuhan.

Terakhir, jika Anda ingin menggunakan Pipenv untuk mengelola proyek yang saat ini menggunakan requirements.txtfile, cukup buka direktori proyek dan jalankan pipenv install. Pipenv akan mendeteksi  requirements.txt(atau Anda dapat menggunakan -rbendera untuk mengarahkannya) dan memigrasikan semua persyaratan ke file Pipfile.