Pembungkusan Python Hebat Sekarang: `uv` adalah semua yang anda perlukan

王林
Lepaskan: 2024-08-11 12:49:01
asal
841 orang telah melayarinya

Python Packaging is Great Now: `uv` is all you need

Tajuk catatan ini adalah merujuk kepada Pembungkusan Python Glyph is Good Now. Saya rasa selamat untuk mengatakan bahawa, dalam 8 tahun ini, kita telah bertukar daripada "Baik" kepada "Hebat". Teruskan membaca untuk alasan saya.

Apakah yang menjadikan pembungkusan Python sukaruntuk pemula?

Saya berpendapat bahawa dua kesukaran utama untuk pembungkusan Python ialah

  • Bootstrapping, iaitu bagaimana untuk memulakan!
  • Pengaktifan, iaitu cara venvs dalam Python berfungsi (lihat benang Mastodon saya, ia sangat sukar untuk dijelaskan!)

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 sudah menjadi pengguna Python sejak lama, tetapi setiap kali saya perlu menjelaskannya, saya melihat wajah pelajar 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 Pythonpemula. Tambahan pula, mereka sedang dalam proses untuk ditangani juga. Baca terus.

Masukkan uv

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 melampaui 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:

  • uv tidak bergantung pada Python itu sendiri. Perduaan kendiri yang diprasusun boleh dipasang dengan mudah pada Linux, macOS dan Windows.
  • uv python menguruskan versi Python! Tidak perlu menggunakan mekanisme khusus OS, seperti pyenv, deadsnakes atau alat berat seperti conda.
  • alat uv mengurus alatan dalam persekitaran terpusat! Tidak perlu lagi pipx atau pudar.
  • uv init mencipta pyproject.toml barebones menggunakan penetasan sebagai binaan belakang dan susun atur src yang berfungsi dengan README kosong dan modul tiruan.
    • Jika anda memerlukan sesuatu yang lebih canggih, anda sentiasa boleh menggunakan mesin penyalin atau pemotong kuki dengan beberapa templat yang lebih canggih.
  • uv menambah menambah kebergantungan pada pyproject.toml,membuat venv jika tidak wujuddan memasangnya!
  • kunci uv mencipta fail kunci dengan semua kebergantungan anda, yang kemudiannya boleh anda gunakan dalam penyegerakan uv.
    • Dan jika anda mahukan requirement.txt lama yang bagus, kompilasi pip uv melakukannya untuk anda, sama seperti alat pip!
  • uv run melaksanakan skrip dan arahan, sekali lagitanpa mengaktifkan persekitaran secara eksplisit!

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!
Salin selepas log masuk

Oleh itu, kepada soalan "bagaimana saya mula belajar Python pada komputer saya", kini anda boleh menjawab secara universal: "pasang uv".

Beberapa renungan

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 depan 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 terdapatgaris asasyang 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.

Pada konda

Topik conda vs pip adalah satu lagi punca kekeliruan yang biasa. Saya adalah pengguna dan peminat conda sejak hari 1, dan ia secara 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.

Kesimpulan

Sebab ia 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 bolehmenang.

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 akan 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!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!