संपादित करें: नवीनतम PyDev संस्करणों (PyDev 3.4.1 के बाद से) अब किसी भी वैकल्पिक हल की जरूरत है:
अर्थात्: PyDev ठीक से एक को मार प्रक्रिया संचालन पर subprocesses मार डालेगा और जब नियमित पर पुन: लोड के साथ भी डीबगिंग, PyDev जोड़ देती है बाल प्रक्रियाओं के लिए डीबगर।
दुर्भाग्य से, कि, उम्मीद के रूप में PyDev बस मूल प्रक्रिया मार डालेगा (यानी: के रूप में Ctrl + C के बजाय अगर तुम्हें मार
पुराना जवाब (3.4.1 से अधिक उम्र के PyDev संस्करणों के लिए) कार्य प्रबंधक में मूल प्रक्रिया)।
समाधान डीजेंगो को स्वयं संपादित करेगा ताकि बच्चे प्रक्रिया को माता-पिता को यह जान सकें कि यह अभी भी जीवित है और बाहर निकलने पर बाहर निकलता है ... देखें: How to make child process die after parent exits? संदर्भ के लिए।
एक त्वरित रूप से यह django/utils/autoreload से संबंधित प्रतीत होता है।पीई और जिस तरह से यह चीजों को शुरू करता है - इसलिए, यह एक थ्रेड शुरू करने की आवश्यकता होगी जो माता-पिता जीवित है या नहीं, और अगर यह बच्चे की प्रक्रिया को मारता नहीं है - मैंने बताया है कि Django में एक बग के रूप में खुद: https://code.djangoproject.com/ticket/16982
नोट: के रूप में PyDev के लिए एक समाधान है, तो आप Django एक नया कंसोल का आवंटन (PyDev में से) कर सकते हैं ताकि, जब तक एक उचित समाधान Django से उपलब्ध है, नीचे दिए गए पैच हो सकता है, जबकि अभी भी PyDev (से चल रहा Django autoreload को एक नया कंसोल आवंटित करने के लिए उपयोग किया जाता है - जहां आप Ctrl + C का सही उपयोग कर सकते हैं)।
Index: django/utils/autoreload.py
===================================================================
--- django/utils/autoreload.py (revision 16923)
+++ django/utils/autoreload.py (working copy)
@@ -98,11 +98,14 @@
def restart_with_reloader():
while True:
args = [sys.executable] + ['-W%s' % o for o in sys.warnoptions] + sys.argv
- if sys.platform == "win32":
- args = ['"%s"' % arg for arg in args]
new_environ = os.environ.copy()
new_environ["RUN_MAIN"] = 'true'
- exit_code = os.spawnve(os.P_WAIT, sys.executable, args, new_environ)
+
+ import subprocess
+ popen = subprocess.Popen(args, env=new_environ, creationflags=subprocess.CREATE_NEW_CONSOLE)
+ exit_code = popen.wait()
if exit_code != 3:
return exit_code
स्रोत
2011-10-04 13:06:39
मुझे आश्चर्य है कि क्या आप इसे एक सुरुचिपूर्ण समाधान कह सकते हैं। यह आसान है, और यह काम करता है। – Udi