2013-07-23 53 views
7

Gọi một cuộc gọi đến setup từ setuptools với phiên bản 0.9.6 tôi có thể chạy lệnh sau:"setup.py clean" chính xác là gì?

python setup.py clean 

Nhưng điều này có chính xác làm gì? Sự giúp đỡ về lệnh này là một chút thưa thớt, và chạy

python setup.py clean --all 

cho tuyên bố vô dụng như

'build/lib.linux-i686-2.7' does not exist -- can't clean it 

Có khả năng sử dụng clean lệnh này để ví dụ dọn dẹp các tệp python tạm thời tự động kết thúc bằng .pyc.~? Điều này có thể được thực hiện với lệnh này, nó có cần phải được cấu hình, ...?

+0

Không quan tâm, tại sao bạn lại muốn thêm hành vi? Tôi có thể tưởng tượng nó cảm thấy tốt đẹp khi có một thư mục sạch sẽ, nhưng nó không phải cái gì bạn nên làm phiền với tổng thể. Có lý do cụ thể nào không? – Evert

+0

Tôi muốn có hành vi bổ sung để chỉ định một thư mục đơn giản, từ đó toàn bộ nội dung được đưa vào gói. Nếu không xóa các tệp python tạm thời trước, tất cả các tệp tạm thời đó sẽ được sử dụng trong bao bì, phải không? Ngoài ra, lệnh 'clean' có thể được sử dụng để chỉ đơn giản là làm sạch thư mục làm việc từ các tệp tạm thời để xem rõ những gì bạn có. – Alex

+0

Để đóng gói, hãy xem xét sử dụng 'setup.py sdist'. Để dọn dẹp: các tệp '* .pyc' không thực sự là vấn đề, nhưng bạn có thể xem xét' tìm. tên "* .pyc" | xargs rm'. Những tệp '* ~' này không phải là một cái gì đó mà Python cần phải bận tâm, vì chúng không liên quan đến Python (điều này cũng có thể xảy ra với một vài kiểu tệp khác). – Evert

Trả lời

6

Theo như tôi biết, nó chỉ xóa thư mục con build, trong đó Python đặt tất cả các tệp được cài đặt, bao gồm các tiện ích mở rộng cần được biên dịch.

Không được có bất kỳ tệp *.pyc ở nơi khác, trừ khi bạn chạy Python trên một số tập lệnh trong thư mục nguồn (có thể xảy ra nếu bạn chạy thử nghiệm) hoặc mô-đun được nhập trực tiếp từ thư mục nguồn. *~ tệp là tệp sao lưu emacs và do đó sẽ không bị xóa sạch bởi setup.py. (Nếu bạn đã nhìn thấy hành vi này từ make clean, hơn đó là đơn giản chỉ vì một người nào đó có mã đó vào Makefile.)

Bạn có thể có thể ghi đè lên các lệnh sạch trong một cách để (đệ quy) loại bỏ *.pyc file, nhưng tôi nghi ngờ nếu có một nhu cầu. Nói chung, Python đủ thông minh để biên dịch lại các tệp *.py thành các tệp *.pyc nếu tệp cũ đã thay đổi và nếu không, tệp này sẽ nhanh hơn.

Có một lưu ý tôi gặp phải, và đó là khi thực hiện setup.py build_ext --inplace, việc xóa sẽ không xóa (các) mô-đun được biên dịch vì chúng không nằm trong thư mục xây dựng. Mà tôi cảm thấy như thiếu sót của lệnh sạch.

Nhìn chung, có vẻ như lệnh sạch sẽ được thêm vào để phù hợp với hành vi của make, nhưng dường như không thêm nhiều.

+1

Vui lòng xem nhận xét khác: Khi tôi tạo một gói, tôi muốn loại bỏ các tệp tạm thời trước tiên. Tôi không muốn họ là một phần của gói. – Alex

+0

Nếu tôi đã sử dụng 'setup.py build_ext --inplace', có cách nào để xóa tất cả các mô-đun đã biên dịch không? – Garrett

+2

@Garrett Nếu đây chỉ là các mô-đun Python thuần túy, bạn có thể sử dụng gợi ý tìm (mofidied) trong các chú thích cho câu hỏi: 'find -name" * pyc "-delete'. Nếu có các tệp khác (được biên dịch từ các tệp nguồn Cython hoặc C), mọi thứ đều có hai hướng và bạn có thể thử chạy lệnh tìm cho từng loại tệp. – Evert