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

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.*


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!


7

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


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.