2017-10-19 19 views
5

Bởi tai nạn tôi nhận thấy rằng cả hai csvre module của thư viện chuẩn python có .__version__ thuộc tính của họ:Tại sao có chuỗi __version__ trong một số mô-đun của thư viện chuẩn Python?

>>> import re, csv 
>>> re.__version__ 
'2.2.1' 
>>> csv.__version__ 
'1.0' 

Nó làm tôi ngạc nhiên khi họ là một phần của thư viện chuẩn, vì vậy tôi mong chờ phiên bản của họ được xác định bởi sys.version (và sys.version_info).

Tôi đã nhận thấy các giá trị của thuộc tính giống nhau cho cả Python 2.7.13 và 3.6.1, mặc dù các mô-đun đã thay đổi.

Chúng chỉ là một loại "hóa thạch mã" hay chúng có ý nghĩa nào đó và các lập trình viên nên chú ý đến giá trị của chúng?

+1

Tôi nghĩ rằng bạn kết hợp các phiên bản của Python với một phiên bản của thư viện. Ví dụ, nếu bạn làm việc với một hệ điều hành Linux-3.16, điều đó không có nghĩa là bạn phải chạy Firefox 3 trên nó để duyệt web. Số phiên bản là * không * toàn cầu. –

+2

Không phải là câu trả lời, tôi đoán, nhưng: * "Trên cơ sở từng trường hợp, các mô-đun thư viện chuẩn cũng được phát hành dưới dạng độc lập cho các phiên bản Python khác CÓ THỂ bao gồm số phiên bản mô-đun khi được đưa vào thư viện chuẩn và NÊN bao gồm số phiên bản khi được đóng gói riêng. "* ([source] (https://www.python.org/dev/peps/pep-0396/#id25)) – vaultah

+0

Hơn nữa thư viện chuẩn thường là tập hợp các gói với số phiên bản cụ thể. Nhưng việc phát triển các gói tiếp tục. Vì vậy, bạn có thể quyết định sử dụng phiên bản "xây dựng hàng đêm" của 're' có thể cung cấp một số tính năng thử nghiệm, nhưng chưa được thử nghiệm đầy đủ để đưa nó vào thư viện chuẩn. Thông thường một thư viện tiêu chuẩn nhằm mục đích chọn các gói chất lượng cao, ít nhiều * đáng tin cậy *. –

Trả lời

1

Tôi có thể giả định rằng phiên bản nguồn của mô-đun trên C không thay đổi, chỉ mã nguồn của mô-đun python đã thay đổi trên các phiên bản khác nhau của bản thân python. Tìm kiếm mã nguồn trong python kho lưu trữ có thể làm sáng tỏ toàn bộ tình huống.

Ví dụ:

+0

Điều này về cơ bản là đúng. Tuy nhiên, các phiên bản 're' hiện có vẻ không đồng bộ:' re .__ version__' cho 2.2.1, nhưng 're.sre_compile._sre.copyright' cho 2.2.2. – ekhumoro

+0

@ekhumoro 'sre' là C lib được nhập khẩu trong mô-đun python' re', có phiên bản riêng, vì vậy các phiên bản của chúng có thể không bằng –

+0

Không, các phiên bản này sẽ giống nhau, vì chính xác lý do bạn đưa ra trong câu trả lời. Tôi nghĩ rằng ai đó chỉ quên cập nhật các mô-đun python lần cuối cùng phiên bản lib C đã bị đụng. Mô-đun csv nhận '__version__' trực tiếp từ thư viện C của nó, vì vậy nó không có vấn đề tiềm năng. – ekhumoro

Các vấn đề liên quan