Cara menguruskan projek Python dengan Pipenv

Ekosistem pakej Python membolehkan anda memanfaatkan kerja berjuta-juta pemaju lain dengan pip installperintah mudah . Persekitaran maya Python membolehkan anda mengasingkan projek dan pakejnya antara satu sama lain.

Tetapi persekitaran dan pakej juggling secara berasingan boleh menjadi sukar. Keraguan jika projek anda mempunyai keperluan pakej yang spesifik, dan anda ingin memberi tumpuan kepada pembangunan dan bukannya penyelenggaraan. Apa yang kita perlukan adalah cara untuk mengurus persekitaran dan pakej bersama. 

Pipenv melancarkan pengurusan persekitaran maya Python dan pakej Python menjadi satu alat. Pipenv memastikan bahawa setiap projek menggunakan versi yang betul dari setiap pakej yang diperlukannya, dan setiap pakej itu juga mempunyai kebergantungan yang betul.

Selanjutnya, Pipenv menghasilkan senarai kebergantungan projek anda yang dapat berjalan dengannya, membolehkan pengguna atau pembangun lain menyiapkan projek yang sama dengan cara yang sama. Pengguna lain juga perlu memasang Pipenv untuk menyiapkan projek Pipenv yang dikendalikan dengan betul, tetapi untungnya, memasang dan menggunakan Pipenv sangat mudah. 

Bagaimana Pipenv berfungsi

Biasanya apabila anda membuat projek Python dan menggunakan persekitaran maya untuk pakejnya, anda ditugaskan untuk membuat persekitaran maya sendiri (menggunakan perintah  py -m venv), memasang pergantungan ke dalamnya, dan mengesan pergantungan secara manual.

Pipenv menyediakan cara untuk melakukan semua ini secara separa automatik. Persekitaran maya untuk projek anda dibuat dan dikendalikan untuk anda apabila anda memasang pakej melalui antara muka baris perintah Pipenv. Ketergantungan dilacak dan dikunci, dan anda boleh menguruskan pergantungan pembangunan dan waktu operasi secara berasingan. Anda juga boleh berpindah dari requirements.txtfail lama yang sudah ada , jadi anda tidak perlu merobek projek anda dan memulakannya dari awal untuk menggunakan Pipenv dengan baik.

Perhatikan bahawa tidak seperti alat pengurusan projek Python yang lain (seperti Puisi), Pipenv tidak menguruskan "perancah" projek anda. Maksudnya, Pipenv tidak membuat struktur dalaman direktori projek dengan ujian tiruan, stub dokumentasi, dll., Tetapi lebih mengutamakan pengurusan pakej dan persekitaran. Ini menjadikan Pipenv pilihan yang baik jika anda hanya mahukan alat memberi tumpuan kepada persekitaran dan pakej maya, dan bukan penyelesaian all-in-one.

Mulakan dengan Pipenv

Pipenv dipasang dalam cara yang sama seperti kebanyakan mana-mana pakej Python lain: pip install --user pipenv. Yang --userpilihan adalah disyorkan untuk mengekalkan Pipenv dari bercanggah dengan pakej seluruh sistem lain. Anda juga harus menambahkan jalan ke direktori binari pangkalan pengguna ke jalur sistem, sehingga perintah Pipenv dihalakan ke tempat yang tepat.

Sekiranya anda merancang untuk menjadikan Pipenv sebagai bahagian aliran kerja anda yang konsisten, ada baiknya anda memastikan pemasangan Python anda yang minimum dapat dilakukan. Nasihat itu berlaku untuk kebanyakan pemasangan Python yang menggunakan persekitaran maya.

Siapkan projek baru dengan Pipenv

Untuk memulakan projek yang sama sekali baru dengan Pipenv, cukup buat direktori dan isi dengan fail yang biasanya anda buat untuk projek. Sekiranya anda cenderung membuat perancah projek semasa anda pergi, anda boleh memulakan dengan direktori kosong.

Memasang pakej untuk projek tidak jauh berbeza dengan Pipenv daripada dengan Pip; sebenarnya, sintaksnya hampir sama. Buka konsol di direktori projek anda dan ketik pipenv install untuk memasang pakej untuk projek tersebut. Untuk menentukan bahawa pakej itu untuk pembangunan , gunakan -dbendera. Anda boleh menggunakan pip sintaks untuk menunjukkan versi tertentu dari pakej (misalnya, black==13.0b1).

Apabila anda memasang pakej dengan Pipenv, dua perkara berlaku. Pertama, Pipenv akan memeriksa sama ada persekitaran maya telah dibuat untuk direktori projek ini. Sekiranya ya, Pipenv akan memasang pakej ke persekitaran maya yang ada. Sekiranya tidak, Pipenv akan membuat persekitaran maya yang menggunakan edisi Python yang sama dengan yang digunakan untuk menjalankan Pipenv. Perhatikan bahawa persekitaran maya tidak dibuat dalam direktori projek itu sendiri; ia dibuat dalam direktori yang dikendalikan oleh Pipenv dalam profil pengguna anda.

Kedua, Pipenv akan memasang pakej yang diminta ke persekitaran maya. Apabila pemasangan selesai, Pipenv akan melaporkan kembali semua yang dilakukannya, termasuk jalan ke persekitaran maya jika harus membuatnya.

Anda secara amnya tidak perlu mengetahui jalan menuju persekitaran maya yang dibuat oleh Pipenv. Untuk mengaktifkan persekitaran, cukup buka direktori projek anda dan gunakan  pipenv shelluntuk melancarkan sesi shell baru atau gunakan  pipenv run untuk menjalankan perintah secara langsung. Sebagai contoh, gunakan  pipenv run mypyuntuk menjalankan versi alat baris perintah mypy(dengan anggapan mypyalat itu dipasang di persekitaran maya), atau pipenv run python -m untuk menjalankan modul Python yang tersedia di persekitaran maya.

Pipenv dan kunci kunci

Lihat di dalam direktori setelah anda memasang pakej dengan Pipenv, dan anda akan melihat dua fail, Pipfiledan Pipfile.lock. Kedua-duanya dihasilkan secara automatik oleh Pipenv, dan tidak boleh diedit secara langsung, kerana mereka menerangkan keadaan paket dalam projek.

Pipfileadalah lebih sederhana dari kedua-duanya. Ia hanya menyenaraikan pakej yang diperlukan untuk projek, dari mana ia dipasang (lalai adalah PyPI), dan versi Python mana yang diperlukan untuk menjalankan semuanya. Pipfile.locklebih kompleks. Ia menyenaraikan setiap pakej bersama dengan perincian versi dan hash SHA-256 yang dihasilkan dari pakej tersebut. Hash digunakan untuk memastikan bahawa pakej yang dipasang sesuai dengan apa yang ditentukan - bukan hanya nombor versi, tetapi kandungan yang diperoleh juga.

Apabila anda mengerjakan projek yang menggunakan Pipenv untuk pengurusan pakej, anda pasti ingin menambahkan Pipfiledan Pipfile.lockfail ke repositori kawalan versi untuk projek tersebut. Segala perubahan yang dibuat pada pakej untuk projek anda akan mengubah fail tersebut, jadi perubahan tersebut harus dilacak dan diubah.

Gunakan projek Pipenv

Sekiranya anda memuat turun repositori sumber untuk projek yang menggunakan Pipenv untuk pengurusan pakej, yang perlu anda lakukan ialah membongkar isi repositori ke dalam direktori dan jalankan pipenv install(tidak perlu nama pakej). Pipenv akan membaca Pipfiledan Pipfile.lockfail untuk projek, membuat persekitaran maya, dan memasang semua kebergantungan mengikut keperluan.

Akhirnya, jika anda ingin menggunakan Pipenv untuk menguruskan projek yang sedang menggunakan requirements.txtfail, pergi ke direktori projek dan jalankan pipenv install. Pipenv akan mengesan  requirements.txt(atau anda boleh menggunakan -rbendera untuk menunjukkannya) dan memindahkan semua syarat ke dalam Pipfile.