2013-07-23 30 views
7

संस्करण 0.9.6 के साथ setuptools से setup के लिए एक कॉल लागू मैं निम्न आदेश चला सकते हैं:"setup.py clean" वास्तव में क्या करता है?

python setup.py clean 

लेकिन क्या यह वास्तव में क्या करता है? इस आदेश पर मदद थोड़ा विरल है, और चल

python setup.py clean --all 

तरह

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

बेकार बयान देता है वहाँ उदा को यह clean आदेश का उपयोग करने के लिए एक संभावना है स्वचालित रूप से अस्थायी पायथन फाइलें .pyc और .~ में समाप्त हो रही हैं? क्या यह इस कमांड के साथ किया जा सकता है, क्या इसे कॉन्फ़िगर करने की आवश्यकता है ...?

+0

ब्याज से, आप अतिरिक्त व्यवहार क्यों चाहते हैं? मैं कल्पना कर सकता हूं कि एक स्वच्छ निर्देशिका रखना अच्छा लगता है, लेकिन ऐसा कुछ नहीं है जिसे आपको समग्र रूप से परेशान किया जाना चाहिए। कोई विशिष्ट कारण? – Evert

+0

मैं केवल एक निर्देशिका निर्दिष्ट करने के लिए अतिरिक्त व्यवहार चाहता हूं, जिससे पूरी सामग्री पैकेज में ली जाती है। अस्थायी पायथन फ़ाइलों को पहले हटाए बिना, उन सभी अस्थायी फ़ाइलों का उपयोग पैकिंग में किया जाएगा, नहीं? साथ ही, 'क्लीन' कमांड का उपयोग अस्थायी फ़ाइलों से काम करने वाली निर्देशिका को साफ़ करने के लिए किया जा सकता है ताकि आप स्पष्ट रूप से देख सकें कि आपके पास क्या है। – Alex

+0

पैकेजिंग के लिए, 'setup.py sdist' का उपयोग करके देखें। सफाई के लिए: '* .pyc' फ़ाइलों को वास्तव में कोई समस्या नहीं होनी चाहिए, लेकिन आप 'ढूंढ' पर विचार कर सकते हैं। -नाम "* .pyc" | xargs आरएम'। उन '* ~' फाइलें कुछ नहीं हैं जिनके साथ पाइथन को परेशान किया जाना चाहिए, क्योंकि वे पाइथन से असंबंधित नहीं हैं (यह कुछ अन्य फ़ाइल प्रकारों के लिए भी जा सकता है)। – Evert

उत्तर

6

जहाँ तक मुझे पता है, यह सिर्फ build उपनिर्देशिका को हटा देता है, जहां पाइथन सभी फ़ाइलों को स्थापित करने के लिए रखता है, जिसमें संकलन करने की आवश्यकता होती है।

कोई अन्य *.pyc फाइलें कहीं और नहीं होनी चाहिए, जब तक कि आप स्रोत निर्देशिका में कुछ स्क्रिप्ट्स पर पाइथन चलाते हैं (जो परीक्षण हो तो हो सकता है), या सीधे स्रोत निर्देशिका से आयातित मॉड्यूल। *~ फ़ाइलें Emacs बैकअप फ़ाइलें हैं, और इस प्रकार setup.py द्वारा किसी भी तरह से साफ़ नहीं किया जाएगा। (आप make clean से इस व्यवहार को देखा है, तो है क्योंकि किसी Makefile में कोडित है कि तुलना में कि बस है।)

आप शायद साफ आदेश एक तरह से करने के लिए रद्द कर सकते थे (रिकर्सिवली) *.pyc फ़ाइलों को हटा दें, लेकिन मुझे शक है वहाँ अगर एक ज़रुरत। आम तौर पर, पाइथन *.py फ़ाइलों को *.pyc फ़ाइलों में पुन: संकलित करने के लिए पर्याप्त स्मार्ट है, यदि पूर्व बदल गया है, और अन्यथा बाद वाले का उपयोग करना तेज़ होगा।

एक चेतावनी है जो मैंने पार किया है, और यह तब होता है जब setup.py build_ext --inplace कर रहा है, सफाई संकलित मॉड्यूल को हटा नहीं पाएगी, क्योंकि ये बिल्ड निर्देशिका में नहीं हैं। मुझे कौन सा साफ आदेश की कमी की तरह लगता है।

कुल मिलाकर, ऐसा लगता है कि स्वच्छ आदेश make के व्यवहार के साथ जोड़ा गया था, लेकिन ऐसा लगता है कि इसमें बहुत कुछ नहीं लगता है।

+1

कृपया अन्य टिप्पणी देखें: जब मैं कोई पैकेज बनाता हूं, तो मैं पहले अस्थायी फ़ाइलों से छुटकारा पाना चाहता हूं। मैं नहीं चाहता कि वे पैकेज का हिस्सा बनें। – Alex

+0

अगर मैंने 'setup.py build_ext --inplace' का उपयोग किया है, तो क्या सभी संकलित मॉड्यूल को हटाने का कोई तरीका है? – Garrett

+2

@ गेटेट अगर ये केवल शुद्ध पायथन मॉड्यूल हैं, तो आप प्रश्न में टिप्पणियों में सुझाव (mofidied) सुझाव का उपयोग कर सकते हैं: 'find -name" * pyc "-delete'। अगर अन्य फाइलें हैं (साइथन या सी स्रोत फाइलों से संकलित), चीजें बालों वाली हैं और आप प्रत्येक फ़ाइल प्रकार के लिए खोज कमांड चलाने की कोशिश कर सकते हैं। – Evert

संबंधित मुद्दे