Tôi có tình huống sau: Tôi đang làm việc trên một số dự án sử dụng các mô-đun thư viện mà tôi đã viết. Các mô-đun thư viện chứa một số lớp và chức năng. Trong mỗi dự án, một số tập con của mã của các thư viện được sử dụng.Có công cụ nào xóa các chức năng không được sử dụng trong Python không?
Tuy nhiên, khi tôi xuất bản dự án cho người dùng khác, tôi chỉ muốn cung cấp mã được sử dụng bởi dự án đó chứ không phải toàn bộ mô-đun. Điều này có nghĩa là tôi muốn, đối với một dự án cụ thể, để xóa các hàm thư viện không sử dụng khỏi mã thư viện (tức là tạo một thư viện mới giảm). Có công cụ nào có thể thực hiện điều này tự động không?
EDIT
Một số làm rõ/trả lời:
- Về "bạn không nên làm điều này nói chung" trả lời: Điểm mấu chốt là trong thực tế, trước khi tôi xuất bản một dự án, tôi tự đi qua các mô-đun thư viện và xóa mã không sử dụng. Vì chúng tôi là tất cả các lập trình viên, chúng tôi biết rằng không có lý do gì để làm điều gì đó theo cách thủ công khi bạn có thể dễ dàng giải thích cho một máy tính cách thực hiện điều đó. Vì vậy, thực tế, viết một chương trình như vậy là có thể và thậm chí không nên quá khó khăn (có, nó có thể không phải là siêu chung). Câu hỏi của tôi là nếu ai đó biết liệu một công cụ như vậy tồn tại, trước khi tôi bắt đầu suy nghĩ về việc thực hiện nó một mình. Ngoài ra, bất kỳ suy nghĩ nào về việc thực hiện điều này đều được hoan nghênh.
- Tôi không muốn chỉ đơn giản là ẩn tất cả mã của mình. Nếu tôi muốn làm điều đó, tôi có lẽ sẽ không sử dụng Python. Trong thực tế, tôi muốn xuất bản mã nguồn, nhưng chỉ có mã có liên quan đến dự án được đề cập.
- Về các nhận xét "bạn được bảo vệ về mặt pháp lý": Trong trường hợp cụ thể của tôi, việc bảo vệ pháp lý/giấy phép không giúp tôi. Ngoài ra, vấn đề ở đây là chung chung hơn so với một số ăn cắp mã. Ví dụ, nó có thể là vì lợi ích của sự rõ ràng: nếu ai đó cần phải sử dụng/phát triển mã, bạn không muốn hàng chục chức năng không liên quan được bao gồm.
Tôi tự hỏi (chân thành) tại sao đây không phải là thực tế phổ biến với các thư viện python (hoặc không python) khác. Có lẽ nó mang lại nhiều vấn đề hơn là giải quyết (hoặc không cần thiết). – heltonbiker
Lưu ý rằng điều này hầu như không thể làm một cách chính xác nói chung: Không có cách nào bạn có thể dự đoán các chức năng nào có thể được truy cập thông qua các tính năng động như 'getattr'. – delnan
Cuối cùng, một mô-đun/thư viện phải là tập hợp các hàm/lớp làm việc cùng nhau để hoàn thành một mục tiêu duy nhất. Nếu một số chức năng không bao giờ được sử dụng, sau đó nó làm cho bạn tự hỏi nếu họ thực sự cần phải là một phần của cùng một thư viện/mô-đun. – mgilson