Nhiều mô-đun Python của bên thứ ba có thuộc tính chứa thông tin phiên bản cho mô-đun (thường là một cái gì đó như module.VERSION
hoặc module.__version__
), tuy nhiên một số thì không.Kiểm tra phiên bản mô-đun Python tại thời gian chạy
Ví dụ cụ thể về các mô-đun như vậy là libxslt và libxml2.
Tôi cần kiểm tra xem phiên bản đúng của các mô-đun này có đang được sử dụng khi chạy không. Có cách nào để làm việc này không?
Một giải pháp tiềm năng sẽ được đọc trong nguồn lúc chạy, băm nó và sau đó so sánh nó với mã băm của phiên bản đã biết, nhưng điều đó thật khó chịu.
Có giải pháp nào tốt hơn không?
Cũng lưu ý rằng, tên gói phải là tên của mục nhập PyPI. Vì vậy, một cái gì đó như "pkg_resources.get_distribution ('MySQLdb'). Phiên bản" sẽ không làm việc nhưng "pkg_resources.get_distribution ('mysql-python'). Phiên bản" sẽ. – Rahul
Nếu bạn đang chạy với tên tệp tuyệt đối, 'pkg_resources' có thể chọn một phiên bản khác che khuất phiên bản bạn đang thực sự chạy vì nó có mức ưu tiên cao hơn trên' PYTHONPATH' hoặc tương tự. – tripleee
Trong trường hợp ai đó muốn biết cách tạo thuộc tính '__version__': http://stackoverflow.com/q/17583443/562769 –