एक खिड़कियों से रास्पबेरी अजगर स्क्रिप्ट विकसित करें


10

मैं विंडोज़ साइड से कई कारणों से रास्पबेरी पाइथन स्क्रिप्ट विकसित करना चाहता हूं: मैं अपने कंप्यूटर पर सभी कोड (अधिक) सुरक्षित रखना चाहता हूं, अगर मैं आरपीआई को भूनता / किसी अन्य प्रोजेक्ट को आज़माता / पाई को पुन: स्थापित करता। इसके अलावा दो स्क्रीन के साथ मेरा मुख्य कंप्यूटर विंडोज़ पर है और मुझे लगता है कि SSH (पोटीन के साथ) पर विम का उपयोग करना इसे करने का एक अच्छा तरीका नहीं है (व्यक्तिगत राय है, लेकिन मुझे यह एर्गोनोमिक नहीं लगता है)।

: मैं इस पाया http://visualgdb.com/tutorials/raspberry/ जो मुझे, रास्पबेरी के लिए एक सी + अनुप्रयोग developp यह remotly और इतने पर संकलित करने के लिए अनुमति देने के लिए लगता है।

क्या अजगर स्क्रिप्ट के विकास के लिए कुछ समान है?

जो मूल रूप से मुझे अनुमति देगा:

  1. मेरी खिड़कियों पर अजगर में विकसित करने के लिए
  2. "रन" बटन को हिट करने के लिए और स्क्रिप्ट (ओं) को आरपीआई पर तैनात किया गया है, और लॉन्च किया गया है
  3. (ड्रीम-सॉल्यूशन) ब्रेकपॉइंट और डिबग लगाने के लिए?

आप एक CM प्रणाली जैसे Git, Mercurial, या SVN का उपयोग करने पर विचार कर सकते हैं। मैं व्यक्तिगत रूप से मर्क्यूरियल पसंद करता हूं और इसके साथ आप अपनी विंडोज़ मशीन से बदलावों को आगे बढ़ा सकते हैं, और उन्हें रास्पबेरी पाई में खींच सकते हैं।
जेम्स मर्टज़

वर्तमान में मेरे पास एक Git है, लेकिन यह वास्तव में यहाँ सवाल नहीं है
J4N

इसलिए यह एक टिप्पणी क्यों है और एक उत्तर नहीं है;)
जेम्स मर्ट्ज़

फेयर काफी :) सॉरी
J4N

जवाबों:


4

PyCharm की जाँच करें । मैं वर्षों से एक खुश भुगतान करने वाला ग्राहक रहा हूं, हालांकि एक मुफ्त सामुदायिक संस्करण भी उपलब्ध है।

एक फाइल वॉचर प्लगइन है जो रिमोट मशीन (आरपीआई) पर फाइलों की नकल करेगा। और यह दूरस्थ डिबगिंग प्रदर्शन करने की क्षमता रखता है ।

डिबगिंग मॉड्यूल को तार करें

PyCharm दूरस्थ डिबगिंग की स्थापना के संबंध में, पहली बात यह है कि तार ऊपर है pycharm-debug.egg। मैं एक मैक पर हूँ और मेरे मामले में फ़ाइल पर है /Applications/PyCharm.app/Contents/debug-eggs/pycharm-debug.egg। मैंने इसे अपने आरपीआई को कमांड के साथ कॉपी किया:

scp /Applications/PyCharm.app/Contents/debug-eggs/pycharm-debug.egg pi@mediapi:

यह फ़ाइल पायथन के रास्ते में कहीं होनी चाहिए ताकि उसे ढूंढा जा सके। मैंने निम्नलिखित को चलाकर एक उपयुक्त स्थान की तलाश की:

pi@mediapi ~ $ python -c 'import sys; print sys.path'
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/pymodules/python2.7']

उस सूची से मेरा मानना /usr/local/lib/python2.7/dist-packages/है कि सबसे उपयुक्त (क्योंकि यह है /usr/local), इसलिए:

sudo mv pycharm-debug.egg /usr/local/lib/python2.7/dist-packages/

और हमें .pthइसे पथ में इंजेक्ट करने के लिए एक फ़ाइल की आवश्यकता है :

pi@mediapi ~ $ echo /usr/local/lib/python2.7/dist-packages/pycharm-debug.egg | sudo tee -a /usr/local/lib/python2.7/dist-packages/pycharm-debug.pth

अंतिम, सेटअप सत्यापित करें:

pi@mediapi ~ $ python -c 'import pydevd; print pydevd'
<module 'pydevd' from '/usr/local/lib/python2.7/dist-packages/pycharm-debug.egg/pydevd.py'>

कूल, डिबगिंग मॉड्यूल एक स्क्रिप्ट को डीबग करने पर वायर्ड हैं। मैं इस पोस्ट के लिए लिखी गई श्रोता स्क्रिप्ट को डीबग करने जा रहा हूं ।

PyCharm सेटअप

PyCharm में, करने के लिए जाओ Run -> Edit Configurations...

+ऊपर बाईं ओर दिए गए साइन को हिट करें और चुनें Python Remote Debug। बस इसे एक नाम दें, remote debugऔर आप यहां काम कर रहे हैं; ठीक है

दूरस्थ डिबग कॉन्फ़िगरेशन

अब पर क्लिक करें Run -> Debug 'remote debug'और आपको डिबग कंसोल में एक संदेश दिखाई देगा,Use the following code to connect to the debugger

लाइनों को कॉपी करें, मेरे मामले में वे इस तरह देख रहे थे:

import pydevd
pydevd.settrace('localhost', port=56112, stdoutToServer=True, stderrToServer=True)

उन्हें उस फ़ाइल के शीर्ष पर पेस्ट करें जिसे आप डिबग कर रहे हैं और फ़ाइल को सहेजें।

फ़ाइल सिंक प्लगइन का उपयोग किए बिना मैं rsync का उपयोग करके फ़ाइलों की प्रतिलिपि बनाता हूं:

[berto@g6]$ rsync -av ./ pi@mediapi:broadcast/

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

[berto@g6]$ ssh -R 56112:localhost:56112 pi@mediapi

PyCharm आपको एक संदेश दिखाना चाहिए Waiting for process connection...

प्रक्रिया कनेक्शन की प्रतीक्षा कर रहा है

आरपीआई पर, प्रोग्राम को चलाएं और आप डिबगर किक को देखेंगे। डिफ़ॉल्ट रूप से यह pydevd लाइन के ठीक बाद की लाइन पर रुकता है, जिसे आप अपनी इच्छानुसार यदि आप कॉन्फ़िगर कर सकते हैं।

और उस बिंदु पर आप दूरस्थ रूप से डिबगिंग कर रहे हैं! :)

दूरस्थ स्क्रिप्ट पर ब्रेकप्वाइंट


मैं एक बार देखूंगा, मेरे पास पहले से ही थोड़ी देर के लिए Resharper है :)
J4N

आप शायद एक ट्यूटोरियल या संक्षिप्त अवलोकन दे सकते हैं कि पाई पर दूरस्थ डिबगिंग के लिए PyCharm सेटअप कैसे करें? मुझे काम करने में समस्या आ रही है।
जेम्स मर्टज़

उत्तर को दूरस्थ डीबगिंग अवलोकन के साथ अद्यतन किया गया है। @ क्रोनो
बर्ट

1

एक विकल्प बस अपनी पायथन स्क्रिप्ट को नेटवर्क ड्राइव पर स्टोर करना है।

उदाहरण के लिए, मैं एक कोड नाम की एक निर्देशिका के तहत एक लैपटॉप (उपयुक्त रूप से समर्थित) पर अपने सभी कोड रखता हूं। मैं एनएफएस का उपयोग करके नेटवर्क को निर्देशिका निर्यात करता हूं।

पाई पर लैपटॉप एनएफएस निर्देशिका को / कोड पर मैप किया जाता है।

यह मुझे लैपटॉप (या Pi) पर विकसित करने और केवल Pi को ssh'ing और /code/script.py का उपयोग करके Pi पर स्क्रिप्ट चलाने की अनुमति देता है।

आम तौर पर मुझे पता चलता है कि पायथन ने अपनी त्रुटियों के बारे में पर्याप्त खुलासा किया है, ताकि मुझे अतिरिक्त डिबगिंग टूल की आवश्यकता न हो।


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

2
@ J4N मैं आमतौर पर पाई के लिए लैपटॉप पर एक स्थायी SSH टर्मिनल विंडो खोलना चाहता हूं। तो स्क्रिप्ट चलाना सिर्फ तीर होगा, वापसी। मुझे डिबगिंग में कोई समस्या नहीं है। जैसा कि मैं कहता हूं कि बैकट्रेस बहुत सारी जानकारी की आपूर्ति करेगा और कुछ और के लिए स्क्रिप्ट के चारों ओर बिखरे हुए कुछ प्रिंट आमतौर पर समस्या का पता लगाते हैं।
जौन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.