2014-04-06 9 views
7

एक फैब्रिक fabfile.py के माध्यम से कदम उठाने के लिए पिचर्म स्थापित करना संभव है?विंडोज पर फैब्रिक fabfile डीबग करने के लिए आप Pycharm कैसे सेट अप करते हैं?

ऐसा लगता है कि यह रन/डीबग कॉन्फ़िगरेशन संपादक के साथ करने योग्य होगा लेकिन मुझे सेटिंग्स को ठीक से प्रतीत नहीं होता है। संपादक एक स्क्रिप्ट चलाने के लिए कह रहा है और मैंने fab -script.py फ़ाइल को आजमाया है, यह सिर्फ मुझे फैब हेल्प विकल्प दे रहा है।

ऐसा लगता है कि मैं करीब हूं लेकिन काफी नहीं है।

+0

डुप्लिकेट: http://stackoverflow.com/questions/19839989/debugging-fabfiles-using-an-ide – Emer

उत्तर

11

यहां बताया गया है कि अगर यह किसी और के लिए उपयोगी है तो मैं इसे कैसे स्थापित कर सकता हूं। इस तरह की अधिकांश चीजों के साथ, एक बार जब आप जादू सेटिंग्स को जानते हैं, तो यह बहुत आसान था। ये सभी निर्देश PyCharm के माध्यम से हैं लेकिन उनमें से कई वैकल्पिक तरीकों से किया जा सकता है। हालांकि, चूंकि यह PyCharm में डिबगिंग के बारे में है, इसलिए मैं निर्देशों के लिए उपयोग कर रहा हूं। इसके अलावा, मैं विंडोज का उपयोग कर रहा हूँ।

प्रोजेक्ट पर्यावरण (सेटिंग -> प्रोजेक्ट इंटरप्रेटर पैकेज स्थापना) का उपयोग करके फैब्रिक पैकेज स्थापित करें। यह वर्चुअल पर्यावरण के साइट पैकेज फ़ोल्डर में फैब्रिक स्थापित करता है साथ ही साथ/scripts फ़ोल्डर में fab.exe और fab-script.py फ़ाइल डालता है। Fab-scripts.py फ़ाइल का स्थान ढूंढें और पथ कॉपी करें (इस तरह की कुछ "सी: \\ स्क्रिप्ट \ fab-script.py")

अब, एक रन कॉन्फ़िगरेशन बनाएं (रन -> कॉन्फ़िगरेशन संपादित करें ... -> पायथन) इस स्क्रिप्ट फ़ाइल नाम के साथ। स्क्रिप्ट पैरामीटर fabfile.py और निष्पादित/डीबग करने के लिए कमांड को इंगित करता है। स्क्रिप्ट पैरामीटर हैं: -f fabfile dev: "MyBranch1" तैनाती यह मुझे "MyBranch1" पैरामीटर के साथ "dev" कार्य को डीबग करने की अनुमति देता है और फिर "तैनाती" कार्य चलाता है। देव को बदलें: "MyBranch1" जो भी आपका कार्य नाम है उसके साथ तैनात करें। कार्य निर्देशिका आपके प्रोजेक्ट फ़ोल्डर को इंगित करती है जो fabfile.py स्थित है (कम से कम मेरी कॉन्फ़िगरेशन के साथ)। मेरा सेटअप इस तरह दिखता है।
RunDebug Configuration

fabfile.py खोलें और ब्रेकपॉइंट डालें जहां आप डीबगर को रोकना चाहते हैं। इस मामले में, चूंकि मैं तैनाती कार्य को डिबग कर रहा हूं, इसलिए मैंने वहां ब्रेकपॉइंट लगाया। enter image description here

अब फैब रन डीबग करने के लिए, सक्रिय कॉन्फ़िगरेशन को अभी बनाया गया है और डीबग पर क्लिक करें। enter image description here

जब ब्रेकप्वाइंट मारा जाता है, आप बंद कर रहे हैं और PyCharm

के साथ अपने कपड़े fabfile.py डिबगिंग जब आप अपने डिबग fabfile चलाने टर्मिनल खोलने के लिए और प्रयोग किया जाता मानकों के साथ फैब आदेश को चलाने के लिए तैयार कर रहे हैं डिबगिंग में फिर, प्रोजेक्ट (काम कर रहे) निर्देशिका पर कमांड प्रॉम्प्ट को इंगित करें। : - enter image description here

+0

linux कोशिश में, स्क्रिप्ट: '/ usr/स्थानीय/बिन/fab' यदि आप वर्चुअलएन्व में हैं, तो इसे स्रोत करें और 'कौन सा fab' के आउटपुट का उपयोग करें – Emer

0

fab निष्पादन लेकिन एक साधारण अजगर स्क्रिप्ट कुछ भी नहीं है (ध्यान दें वातावरण चर पथ संपत्ति में यह होने से स्क्रिप्ट फ़ोल्डर में fab.exe कमांड लाइन से निष्पादन योग्य होने की जरूरत है)।

import re 
import sys 

from fabric.main import main 

if __name__ == '__main__': 
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) 
    sys.exit(main()) 

यानी: उदाहरण के लिए, कपड़ा 1.10.2 के साथ यह सिर्फ इस (हालांकि मैं कुटिया और एन्कोडिंग लाइनों को छोड़ दिया) है सब यह वास्तव में क्या कर रही है fabric.main.main() बुला रहा है। मुझे यकीन नहीं है कि यह sys.argv[0] में विंडोज एक्सटेंशन क्यों निकाल रहा है, लेकिन इससे कोई फर्क नहीं पड़ता।

आप एक fabfile डिबग करने के लिए, या तो बस के रूप में स्क्रिप्ट अपने आईडीई द्वारा डिबग किए जाने की fab.py फ़ाइल सेट करें, या एक छोटे से ठूंठ फ़ाइल है कि कपड़े के main() और डिबग कि कॉल करने चाहते हैं।फिर आप अपने fabfile में कहीं भी ब्रेकपॉइंट डाल सकते हैं, (या आपके fabfile आयात कुछ भी) जैसा कि आप किसी भी अन्य अजगर कार्यक्रम के साथ करेंगे।

इसके अलावा, आपको जिस मुख्य भाग की आवश्यकता है वह निष्पादित स्क्रिप्ट पर तर्क पारित करने में सक्षम होना है ताकि वे sys.argv में दिखाई दें। यह कैसे करें आपके आईडीई/डीबगर पर निर्भर करता है। या, आप बस उन्हें अपने आप में जाम कर सकता है, कुछ इस तरह:

import sys 
from fabric.main import main 

sys.argv[1:] = ["task1",."task2"] #or whatever you would give fab. 
main() 

अपने आईडीई का उपयोग करते हुए/डिबगर विधि बहुत निश्चित रूप से बेहतर है।

0

मैंने स्क्रीनशॉट में उपरोक्त निर्देशों का पालन किया। कृपया ध्यान रखें कि फैब स्क्रिप्ट ऊपर को शामिल करना चाहिए हो:

import fabric.main 

if __name__ == '__main__': 
    fabric.main.main() 
संबंधित मुद्दे