Dalam requirement.txt, apa arti tilde sama dengan (~ =)?

100

Di requirements.txtuntuk pustaka Python yang saya gunakan, salah satu persyaratan ditentukan seperti:

mock-django~=0.6.10

Apa ~=maksudnya

James Hiew
sumber

Jawaban:

119

Ini berarti ia akan memilih versi terbaru dari paket tersebut, lebih besar dari atau sama dengan 0.6.10, tetapi masih dalam versi 0.6. *, Jadi misalnya tidak akan mengunduh 0.7.0. Ini memastikan Anda akan mendapatkan perbaikan keamanan tetapi tetap mempertahankan kompatibilitas ke belakang, jika pengelola paket menghormati versi semantik (yang menyatakan bahwa perubahan yang melanggar harus terjadi hanya dalam versi mayor).

Atau, seperti yang dikatakan oleh PEP 440:

Untuk pengenal rilis VN tertentu, klausa rilis yang kompatibel kira-kira setara dengan pasangan klausa perbandingan:

>= V.N, == V.*

Maxime Lorant
sumber
3
"sekitar"? Apakah ada pengecualian untuk kesetaraan ini?
AXO
1
@AXO AFAIK, ada kehalusan dengan pencocokan versi pra / pasca rilis. Sebagian besar waktu ini tidak akan mempengaruhi penggunaan dasar sebagian besar terbatas pada pencocokan versi mayor / minor.
Maxime Lorant
12

Itu adalah penentu versi 'rilis yang kompatibel' .

Ini setara dengan:, mock-django >= 0.6.10, == 0.6.*dan merupakan cara rapi untuk mencocokkan versi yang diharapkan kompatibel. Dalam bahasa Inggris yang sederhana, ini seperti mengatakan: "Saya memerlukan versi mock-django yang setidaknya baru 0.6.10, tetapi tidak terlalu baru sehingga tidak kompatibel dengannya."

Jika Anda tidak yakin tentang semua hal tentang nomor versi ini, lihat sekilas skema versi PEP440 akan membantu Anda!


sumber
7

~ = berarti versi yang kompatibel. Tidak kurang dari 0.6.10 dan lebih tinggi (0.6. *).

Nurjan
sumber
3

Klausul rilis yang kompatibel terdiri dari operator rilis yang kompatibel ~ = dan pengenal versi. Ini cocok dengan versi kandidat apa pun yang diharapkan kompatibel dengan versi yang ditentukan.

Anda dapat membaca lebih lanjut di sini: https://www.python.org/dev/peps/pep-0440/#compatible-release

Kieran
sumber