Tôi phải lấy tên phân phối Linux từ tập lệnh Python. Có một phương pháp dist
trong module nền tảng:Kiểm tra tên phân phối Linux
import platform
platform.dist()
Nhưng dưới Arch Linux của tôi nó sẽ trả về:
>>> platform.dist()
('', '', '')
Tại sao? Làm thế nào tôi có thể nhận được tên?
PS. Tôi phải kiểm tra xem bản phân phối có dựa trên Debian hay không.
Cập nhật: Tôi tìm thấy tại đây Python site, mà dist() không còn được dùng kể từ 2.6.
>>> platform.linux_distribution()
('', '', '')
@Kimvais Ý tôi là lấy tên chính xác từ tập lệnh python mà không cần phân tích cú pháp bất kỳ tệp nào, chỉ có các phương thức standart. – Ockonal
'uname -a' trở về Arch là gì? platform.py là 1600 dòng thử tất cả mọi thứ mà họ có thể nghĩ đến để phân biệt các hệ thống khác nhau; nó là một đống khổng lồ của heuristics. Arch cũng dường như chỉ dựa vào chính nó, không có bản phân phối nào khác: http://en.wikipedia.org/wiki/Arch_Linux – msw
'Lsb_release -is' trả về dưới Arch là gì? Nếu 'platform.dist()' cung cấp cho bạn không có dữ liệu có thể sử dụng, có thể bạn có thể gọi 'subprocess.check_output ([" lsb_release "," - is "])' thay thế. – panzi