Rumah > pembangunan bahagian belakang > Tutorial Python > Pembungkusan Python Hebat Sekarang: `uv` adalah semua yang anda perlukan

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

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

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

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.

Apakah yang menjadikan pembungkusan Python sukar untuk pemula?

Saya berpendapat bahawa dua kesukaran utama untuk pembungkusan Python ialah

  • Bootstrapping, iaitu bagaimana untuk bermula!
  • 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 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.

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

  • 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, mencipta venv jika tidak wujud dan memasangnya!
  • kunci uv mencipta fail kunci dengan semua kebergantungan anda, yang kemudiannya boleh anda gunakan dalam penyegerakan uv.
    • Dan jika anda mahukan requirements.txt lama yang bagus, kompilasi pip uv melakukannya untuk anda, sama seperti alat pip!
  • uv run melaksanakan skrip dan arahan, sekali lagi tanpa 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 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.

Pada konda

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.

Kesimpulan

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan