Tajuk siaran ini merujuk kepada Pembungkusan Python Glyph Baik Sekarang. Saya rasa selamat untuk mengatakan bahawa, dalam 8 tahun ini, kita telah bertukar daripada "Baik" kepada "Hebat". Teruskan membaca untuk alasan saya.
Saya berpendapat bahawa dua kesukaran utama untuk pembungkusan Python ialah
Bootstrapping merupakan masalah yang sering diabaikan. Patutkah kita memberitahu orang ramai untuk memasang Python dari https://python.org? Pengagihan Anaconda? Bagaimanakah kita menghalang orang daripada menggunakan pengurus pakej sistem mereka dan berisiko merosakkan segala-galanya?
Dan jangan lupa keseluruhan kitaran hayat persekitaran maya. Sungguh gila betapa saya menjadi kebas terhadapnya sebagai pengguna Python yang lama, tetapi setiap kali saya perlu menjelaskannya, saya melihat muka murid saya dan saya fikir "ini tidak boleh".
Pasti, terdapat masalah lain, seperti cara membina dan menerbitkan pakej boleh diagihkan. Tetapi saya berpendapat ini tidak menjejaskan kebanyakan pemula Python. Tambahan pula, mereka sedang dalam proses untuk ditangani juga. Baca terus.
Pada 15 Februari, Astral mengeluarkan uv dan saya segera melompat. Sebagai sebahagian daripada tugas saya, saya secara rutin perlu memasang banyak kebergantungan yang berpotensi bercanggah, dan uv melegakan segera.
Tetapi perkara yang menarik ialah kini uv telah melangkaui fasa "faster pip" awalnya dan ia memenuhi janjinya untuk menjadi "projek Python yang komprehensif dan pengurus pakej yang pantas, boleh dipercayai dan mudah digunakan".
Berbalik kepada masalah bootstrap dan pengaktifan yang saya nyatakan pada awal-awal lagi, bagaimanakah uv menyelesaikannya? Pertimbangkan ini:
Pada asasnya, ini:
$ mkdir uv-playground $ cd uv-playground $ uv init warning: `uv init` is experimental and may change without warning Initialized project `uv-playground` $ uv add click warning: `uv add` is experimental and may change without warning Using Python 3.12.3 interpreter at: /usr/bin/python3 Creating virtualenv at: .venv Resolved 3 packages in 66ms Built uv-playground @ file:///tmp/uv-playground Prepared 2 packages in 430ms Installed 2 packages in 0.62ms + click==8.1.7 + uv-playground==0.1.0 (from file:///tmp/uv-playground) $ tree . ├── pyproject.toml ├── README.md ├── src │ └── uv_playground │ ├── __init__.py └── uv.lock 3 directories, 4 files $ uv run python -c "from uv_playground import hello; print(hello())" warning: `uv run` is experimental and may change without warning Hello from uv-playground!
Oleh itu, kepada soalan "bagaimana saya mula belajar Python pada komputer saya", kini anda boleh menjawab secara universal: "pasang uv".
Mengenai topik persekitaran maya, saya pada dasarnya bersetuju dengan Armin apabila dia berkata
npm melarikan diri tanpa sebarang "pengaktifan" yang setara dan saya rasa ekosistem Python masa hadapan juga tidak akan banyak digunakan dalam pengaktifan virtualenv.
Saya juga perasan bahawa uv init memilih penetasan. Saya sentiasa mempunyai sedikit keutamaan terhadap PDM, tetapi saya fikir ini mungkin titik tiada pulangan.
Leah dan penyumbang memerlukan banyak usaha untuk menghasilkan gambar rajah keputusan ini untuk panduan pembungkusan PyOpenSci. Tetapi hakikat bahawa kini terdapat garis dasar yang boleh diubah oleh orang ramai sekiranya mereka mempunyai keperluan yang lebih khusus (contohnya, bahagian belakang binaan berkemampuan Meson atau scikit-build) sekali lagi memberikan Pengalaman Pembangun yang lebih baik.
Topik conda vs pip ialah satu lagi punca kekeliruan yang biasa. Saya adalah pengguna dan peminat conda sejak hari 1, dan ia berkesan menyelamatkan Python daripada kematian yang sangat jelas pada masa yang sangat sukar untuk hanya memasang barangan pada Windows.
Pada tahun-tahun berikutnya, saya sering merujuk kepada catatan blog lama oleh Jake VanderPlas yang menerangkan perbezaan, tetapi ia kelihatan seperti hilang punca sekarang.
Masalah kebolehoperasian antara pip dan conda tidak pernah ditangani sepenuhnya, dan walaupun saya rasa orang Pixi melakukan kerja yang hebat, saya fikir dalam jangka panjang uv akan menang.
Saya mengakui sepenuhnya bahawa pakej conda lebih berstruktur berdasarkan tanggapan kod bukan Python, dan dunia semasa "roda lemak pada PyPI" jelas merupakan penyelesaian yang tidak optimum. Tetapi keseluruhan ekosistem telah bergerak ke arah itu: kebanyakan pakej kini menerbitkan roda yang telah disusun terlebih dahulu untuk pelbagai jenis platform.
Dalam erti kata lain: conda mungkin tidak berguna pada tahun 2024 seperti pada tahun 2014, dan mungkin sudah tiba masanya untuk berhenti mengajarnya kepada pemula dan menganggapnya sebagai alat lanjutan.
Alasannya terlalu awal ialah beberapa arahan uv ini masih dalam percubaan dan mungkin akan berkembang pada masa hadapan. Tetapi buat pertama kalinya, saya melihat dengan jelas alat aliran kerja yang mematuhi piawaian, komprehensif, bebas daripada masalah bootstrap, direka dengan teliti dan yang boleh menang.
Apakah yang diingini ramai pengkritik pembungkusan Python selama ini, bukan? Tidak perlu memilih daripada banyak alat yang berbeza. Tetapi saya rasa uv telah melampaui itu dan menyelesaikan isu Pengalaman Pembangun yang lain, yang saya gembira dan bersyukur.
Saya menggunakan uv dengan berkesan untuk segala-galanya dan saya tidak melihat ke belakang. Saya akan terus mengesyorkan alat ini kepada semua orang, terus bercakap mengenainya dan berharap alat ini menjadi lebih meluas.
Atas ialah kandungan terperinci Pembungkusan Python Hebat Sekarang: `uv` adalah semua yang anda perlukan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!