Trong request.txt, dấu ngã bằng (~ =) có nghĩa là gì?


100

Trong requirements.txtthư viện Python mà tôi đang sử dụng, một trong các yêu cầu được chỉ định như:

mock-django~=0.6.10

Nghĩa ~=là gì?

Câu trả lời:


119

Nó có nghĩa là nó sẽ chọn phiên bản mới nhất của gói, lớn hơn hoặc bằng 0.6.10, nhưng vẫn ở phiên bản 0.6. *, Vì vậy nó sẽ không tải xuống 0.7.0 chẳng hạn. Nó đảm bảo bạn sẽ nhận được các bản sửa lỗi bảo mật nhưng vẫn giữ được khả năng tương thích ngược, nếu người bảo trì gói tôn trọng việc lập phiên bản ngữ nghĩa (cho biết rằng các thay đổi vi phạm chỉ xảy ra trong các phiên bản chính).

Hoặc, như đã nói trong PEP 440:

Đối với một mã định danh phát hành cụ thể là VN, mệnh đề phát hành tương thích gần tương đương với cặp mệnh đề so sánh:

>= V.N, == V.*


3
"xấp xỉ"? Có bất kỳ ngoại lệ nào cho sự tương đương này không?
AXO

1
@AXO AFAIK, có sự tinh tế khi khớp phiên bản phát hành trước / sau. Hầu hết thời gian, điều này sẽ không ảnh hưởng đến việc sử dụng cơ bản, hầu như chỉ giới hạn ở phiên bản chính / phụ.
Maxime Lorant

12

Đó là thông số phiên bản ' bản phát hành tương thích' .

Nó tương đương với:, mock-django >= 0.6.10, == 0.6.*và là một cách gọn gàng để so khớp phiên bản dự kiến ​​sẽ tương thích. Trong tiếng Anh đơn giản, nó giống như nói: "Tôi cần một phiên bản mock-django ít nhất là mới như 0,6.10, nhưng không quá mới đến mức không tương thích với nó."

Nếu bạn không chắc chắn về tất cả những thứ liên quan đến số phiên bản này, hãy xem nhanh sơ đồ phiên bản PEP440 sẽ giúp bạn loại bỏ!


7

~ = có nghĩa là một phiên bản tương thích. Không nhỏ hơn 0,6.10 và cao hơn (0,6. *).


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.