ใน Requirement.txt ทิลเดอเท่ากับ (~ =) หมายถึงอะไร?


100

ในrequirements.txtไลบรารี Python ที่ฉันใช้อยู่มีการระบุข้อกำหนดอย่างใดอย่างหนึ่งเช่น:

mock-django~=0.6.10

อะไร~=หมายถึง?

คำตอบ:


119

หมายความว่าจะเลือกแพคเกจเวอร์ชันล่าสุดมากกว่าหรือเท่ากับ 0.6.10 แต่ยังอยู่ในเวอร์ชัน 0.6. * ดังนั้นจะไม่ดาวน์โหลด 0.7.0 เป็นต้น ช่วยให้แน่ใจว่าคุณจะได้รับการแก้ไขด้านความปลอดภัย แต่ยังคงความเข้ากันได้แบบย้อนหลังหากผู้ดูแลแพ็กเกจเคารพการกำหนดเวอร์ชันความหมาย (ซึ่งระบุว่าการเปลี่ยนแปลงที่ทำลายควรเกิดขึ้นเฉพาะในเวอร์ชันหลักเท่านั้น)

หรือตามที่ PEP 440 กล่าวไว้:

สำหรับตัวระบุรุ่นที่ระบุ VN ส่วนคำสั่งรีลีสที่เข้ากันได้จะเทียบเท่ากับคู่ของประโยคเปรียบเทียบ:

>= V.N, == V.*


3
"ประมาณ"? มีข้อยกเว้นสำหรับการเทียบเท่านี้หรือไม่?
AXO

1
@AXO AFAIK มีรายละเอียดปลีกย่อยที่มีการจับคู่เวอร์ชันก่อน / หลังการเผยแพร่ เวลาส่วนใหญ่สิ่งนี้จะไม่ส่งผลต่อการใช้งานพื้นฐานโดยส่วนใหญ่จะ จำกัด เฉพาะการจับคู่เวอร์ชันหลัก / รอง
Maxime Lorant

12

นั่นคือ 'ปล่อยเข้ากันได้' รุ่นที่ระบุ

เทียบเท่ากับ: mock-django >= 0.6.10, == 0.6.*และเป็นวิธีที่เป็นระเบียบเรียบร้อยในการจับคู่เวอร์ชันที่คาดว่าจะเข้ากันได้ ในภาษาอังกฤษธรรมดามันเหมือนกับการพูดว่า: "ฉันต้องการรุ่นของ mock-django ซึ่งอย่างน้อยก็ใหม่เท่า 0.6.10 แต่ก็ไม่ใช่ของใหม่จนเข้ากันไม่ได้กับมัน"

หากคุณไม่แน่ใจเกี่ยวกับหมายเลขเวอร์ชันทั้งหมดนี้การดูอย่างรวดเร็วเกี่ยวกับโครงร่างเวอร์ชัน PEP440 จะช่วยให้คุณเข้าใจได้!



3

ประโยครุ่นที่เข้ากันได้ประกอบด้วยตัวดำเนินการรีลีสที่เข้ากันได้ ~ = และตัวระบุเวอร์ชัน ตรงกับเวอร์ชันของผู้สมัครที่คาดว่าจะเข้ากันได้กับเวอร์ชันที่ระบุ

คุณสามารถอ่านเพิ่มเติมได้ที่นี่: https://www.python.org/dev/peps/pep-0440/#compatible-release

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.