พัฒนาสคริปต์ Raspberry python จากหน้าต่าง


10

ฉันต้องการพัฒนาสคริปต์หลาม Raspberry จากฝั่ง windows ด้วยเหตุผลหลายประการ: ฉันต้องการเก็บรหัสทั้งหมด (เพิ่มเติม) ให้ปลอดภัยบนคอมพิวเตอร์ของฉันในกรณีที่ฉันทอด RPi / ลองโครงการอื่น / ติดตั้ง Pi อีกครั้ง คอมพิวเตอร์หลักของฉันที่มีสองหน้าจออยู่บน windows และฉันพบว่าการใช้เสียงเรียกเข้ามากกว่า SSH (with putty) ไม่ใช่วิธีที่ดีในการทำ (ความเห็นส่วนตัว แต่ฉันไม่คิดว่าเหมาะกับการใช้งาน)

ฉันพบสิ่งนี้: http://visualgdb.com/tutorials/raspberry/ซึ่งดูเหมือนว่าจะอนุญาตให้ฉันพัฒนาแอปพลิเคชั่น C + สำหรับราสเบอร์รี่ให้คอมไพล์มันแบบ remotly และอื่น ๆ

มีอะไรที่เทียบเท่ากับการพัฒนาสคริปต์ไพ ธ อนไหม?

ซึ่งโดยทั่วไปจะให้ฉัน:

  1. เพื่อพัฒนาในหลามบน windows ของฉัน
  2. หากต้องการกดปุ่ม "Run" และนำสคริปต์ไปใช้กับ RPi และเปิดใช้งาน
  3. (Dream-solution) เพื่อวางจุดพักและดีบัก?

คุณอาจพิจารณาใช้ระบบ CM เช่น Git, Mercurial หรือ SVN ฉันชอบ Mercurial และคุณสามารถผลักดันการเปลี่ยนแปลงจากเครื่อง windows ของคุณและดึงมันเข้าสู่ราสเบอร์รี่ปี่
James Mertz

ฉันกำลังมี Git แต่นี้ไม่ได้จริงๆคำถามที่นี่
J4N

ดังนั้นทำไมนี่เป็นความเห็นและไม่ได้คำตอบ;)
เจมส์ Mertz

ยุติธรรมเพียงพอ :) ขออภัย
J4N

คำตอบ:


4

ตรวจสอบPyCharm ฉันเป็นลูกค้าที่จ่ายเงินมานานหลายปีแล้วอย่างไรก็ตามยังมีรุ่นชุมชนให้ใช้ฟรี

มีปลั๊กอินตัวเฝ้าดูไฟล์ที่จะคัดลอกไฟล์ไปยังเครื่องระยะไกล (RPi ของคุณ) และก็จะมีความสามารถในการดำเนินการแก้จุดบกพร่องระยะไกล

วางสายการดีบักโมดูล

ด้วยความเคารพในการตั้งค่า PyCharm pycharm-debug.eggระยะไกลแก้จุดบกพร่องสิ่งแรกที่ต้องทำคือลวดขึ้น ฉันบน Mac /Applications/PyCharm.app/Contents/debug-eggs/pycharm-debug.eggและในกรณีของฉันไฟล์ที่ ฉันคัดลอกไปยัง RPi ของฉันด้วยคำสั่ง:

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

ไฟล์นี้จะต้องอยู่ที่ไหนสักแห่งในเส้นทางของ Python เพื่อให้สามารถพบได้ ฉันค้นหาสถานที่ที่เหมาะสมโดยดำเนินการดังต่อไปนี้:

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'>

Cool โมดูลการดีบักถูกต่อสายเข้าเพื่อเปิดการดีบักสคริปต์ ฉันจะแก้จุดบกพร่องสคริปต์ฟังที่ฉันเขียนสำหรับโพสต์นี้

ตั้งค่า 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 เพื่อให้ RPi สามารถอยู่บนโต๊ะทำงานของคุณหรือทั่วโลกและทำงานในลักษณะเดียวกัน SSH ลงใน RPi โดยใช้คำสั่งนี้เพื่อเชื่อมโยงพอร์ตระยะไกลกับพอร์ตท้องถิ่น:

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

PyCharm ควรแสดงข้อความ Waiting for process connection...

กำลังรอการเชื่อมต่อกระบวนการ

บน RPi ให้เรียกใช้โปรแกรมแล้วคุณจะเห็นตัวดีบักเริ่มทำงานโดยค่าเริ่มต้นจะหยุดที่บรรทัดหลังจาก pydevd line ซึ่งคุณสามารถเปลี่ยนได้ใน config หากคุณต้องการ

และ ณ จุดนั้นคุณจะดีบั๊กจากระยะไกล! :)

เบรกพอยต์กับสคริปต์ระยะไกล


ผมจะดูที่ผมมีอยู่แล้ว Resharper ในขณะที่ :)
J4N

คุณอาจจะให้บทเรียนหรือภาพรวมคร่าวๆเกี่ยวกับวิธีการตั้งค่า PyCharm สำหรับการดีบั๊กจากระยะไกลบน pi หรือไม่? ฉันมีปัญหาในการทำให้มันทำงาน
James Mertz

คำตอบได้รับการปรับปรุงด้วยภาพรวมการดีบักระยะไกล @KronoS
berto

1

ทางเลือกหนึ่งคือการเก็บสคริปต์ Python ของคุณไว้ในไดรฟ์เครือข่าย

ตัวอย่างเช่นฉันเก็บรหัสทั้งหมดไว้ในแล็ปท็อป (สำรองอย่างเหมาะสม) ภายใต้ไดเรกทอรีที่เรียกว่ารหัส ฉันส่งออกไดเรกทอรีไปยังเครือข่ายโดยใช้ NFS

ใน Pi ไดเรกทอรีแล็ปท็อป NFS ถูกแมปไปยัง / รหัส

ที่ช่วยให้ฉันพัฒนาบนแล็ปท็อป (หรือ Pi) และเรียกใช้สคริปต์บน Pi เพียงแค่ ssh'ing ไปที่ Pi และใช้ /code/script.py

โดยทั่วไปฉันพบว่า Python เปิดเผยเกี่ยวกับข้อผิดพลาดของฉันมากพอที่มี backtrace ให้ฉันไม่ต้องใช้เครื่องมือการดีบักเพิ่มเติม


ฉันคิดว่าการแชร์เครือข่ายนั้นมีความเป็นไปได้ แต่ก็ยังต้องการให้ฉันไปที่ Pi เปิดตัวและหยุดทุกครั้งและจะไม่อนุญาตให้ทำการดีบัก
J4N

2
@ J4N ปกติแล้วฉันจะเปิดหน้าต่างเทอร์มินัล SSH ถาวรบนแล็ปท็อปของ Pi ดังนั้นการรันสคริปต์จะเป็นลูกศรขึ้นย้อนกลับ ฉันไม่ได้มีปัญหาในการดีบัก อย่างที่ฉันบอกว่า backtrace จะให้ข้อมูลมากมายและสำหรับสิ่งอื่น ๆ อีกสองสามภาพที่กระจัดกระจายไปรอบ ๆ สคริปต์มักจะพบปัญหา
joan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.