2009-06-30 19 views
7

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

क्या किसी को यह पता है कि यह कैसे करना है?

उत्तर

16

यह बहुत सारी जानकारी नहीं है, इसलिए यह उत्तर थोड़ा अस्पष्ट है। मेकफ़ाइल का मूल सिद्धांत प्रत्येक लक्ष्य के लिए निर्भरता सूचीबद्ध करना है; इस मामले में, अपने लक्ष्य (चलो यह foo कहते हैं) अपने अजगर स्क्रिप्ट पर निर्भर करता है (यह do-foo.py कॉल): जब भी do-foo.py परिवर्तन (बशर्ते

foo: do-foo.py 
    python do-foo.py > foo 

अब foo को फिर से चलाएं किया जाएगा, बेशक, आप कॉल करते हैं)।

+0

मैंने अपनी स्क्रिप्ट में सही ढंग से मेरी .py फ़ाइलों पर निर्भरता परिभाषित नहीं की है। धन्यवाद – Patrick

+0

एक नोट के रूप में, भले ही सवाल प्रभावी ढंग से स्वयं हल हो गया है, मैं इस जवाब पर विस्तार करना चाहता हूं। आप लक्ष्य 'pyc/pyo' फ़ाइलों का उत्पादन करने के लिए' पायथन-एम संकलन 'के आक्रमणों का उपयोग करके लक्ष्य के रूप में बाइटकोड संकलन को भी परिभाषित कर सकते हैं। – amcgregor

0

यदि आप चाहते हैं कि मेकफ़ाइल को स्वचालित रूप से सहेजने के बाद स्वचालित रूप से "बनाया गया" pyinotify, जो inotify के लिए एक रैपर है, लिनक्स के तहत एकमात्र संभावना हो सकती है। यह कर्नेल में एफएस परिवर्तनों का पता लगाने के लिए पंजीकृत है और आपके फ़ंक्शन को वापस कॉल करता है।

उस विषय पर मेरे previous post देखें।

+0

जानना अच्छा है! लेकिन मुझे लगता है कि मेरा सवाल थोड़ा अस्पष्ट था, यह एक मेकअप सवाल था। फिर भी धन्यवाद! – Patrick

3

और मामला है जब स्क्रिप्ट किसी भी उपयोगी आउटपुट फ़ाइल है कि एक लक्ष्य के रूप में इस्तेमाल किया जा सकता का उत्पादन नहीं करते चलाने करने की आवश्यकता है, तो आप सिर्फ एक डमी लक्ष्य का उपयोग कर सकते में:

scripts=a.py b.py c.py 
checkfile=.pipeline_up_to_date 

$(checkfile): $(scripts) 
    touch $(checkfile) 
    echo "Launching some commands now." 

default: $(checkfile) 
+2

के बारे में क्या। PHONY? http://gnu.huihoo.org/make-3.77/html_node/make_33.html –

+1

आपका पायथन कॉल कहां है? – meduz

0

यह एक नहीं है आपके प्रश्न का सीधा जवाब, लेकिन मेरा सुझाव है कि आप जैव सूचना विज्ञान के पास वैज्ञानिकों को समर्पित इस ट्यूटोरियल को पढ़ने के लिए सुझाव दें: - https://swcarpentry.github.io/make-novice/

+0

ये दोनों लिंक अब मौजूद नहीं हैं। –

+0

धन्यवाद @ विष्णु नारंग, मूल संसाधन अब मौजूद नहीं है लेकिन मैंने एक ही लेखकों द्वारा एक समान ट्यूटोरियल के लिए एक लिंक जोड़ा है। – dalloliogm

+0

@dalloliogm आपके द्वारा जोड़े गए लिंक को भी हटा दिया गया है। क्या आप जांच सकते हैं कि कहीं और अपडेट किया गया लिंक है या नहीं? मेरे पास यह पृष्ठ बुकमार्क किया गया था लेकिन यह शर्म की बात है कि अधिकांश लिंक मर गए हैं। –