2011-11-23 10 views
15

जब मैं python manage.py shell टाइप करके django खोल शुरू करता हूं ipython खोल शुरू होता है। क्या Django को qtconsole मोड में ipython शुरू करना संभव है? क्या एंड्रयू विल्किनसन उसके जवाब में सुझाव दिया तो मैं कोशिश कर रहा हूँ - एक कमांड जो मूल Django शेल कमांड पर आधारित है साथ मेरे Django अनुप्रयोग का विस्तार: (यानी यह ipython qtconsole चलाने बनाने)qtconsole मोड में ipython के साथ django खोल कैसे शुरू करें?

Arek

संपादित करें।

from django.core.management.base import NoArgsCommand 

class Command(NoArgsCommand): 
    requires_model_validation = False 

    def handle_noargs(self, **options): 
     from IPython.frontend.terminal.embed import TerminalInteractiveShell 
     shell = TerminalInteractiveShell() 
     shell.mainloop() 

किसी भी सलाह है कि कैसे इस कोड qtconsole मोड में IPython शुरू करने के लिए बदलने के लिए: जहाँ तक मैं जो मूल संस्करण में IPython शुरू होता है कोड को समझने के लिए इस है?

दूसरा संपादन: जो मैंने पाया और अब तक काम करता है - उस स्थान से 'ipython qtconsole' शुरू करें जहां मेरी परियोजना की settings.py है (या sys.path को अलग-अलग स्थान से प्रारंभ करते समय सेट करें), और उसके बाद निष्पादित करें इस:

import settings 
import django.core.management 
django.core.management.setup_environ(settings) 

और अब मैं अपने मॉडल आयात कर सकते हैं, सभी उदाहरणों आदि

+0

अभी तक इसके लिए एक आसान कमांड नहीं हो सकता है, लेकिन यह काम करना निश्चित रूप से संभव होना चाहिए। –

+0

क्या यह आपको स्वीकार्य होगा, अगर आप 'ipython'' ipython qtconsole' को '/ usr/local/bin' में उपनाम करना चाहते हैं? – Unapiedra

+0

@Unapiedra: मुझे नहीं लगता कि यह काम करेगा। Django एक पायथन स्तर पर आयात और कॉल करके ipython शुरू होता है, एक शेल कमांड का उपयोग नहीं। –

उत्तर

4

मैं निम्नलिखित के साथ एक खोल स्क्रिप्ट बनाया।

और मैं साथ /path/to/my/site में एक अजगर स्क्रिप्ट shell.py बनाया: मेरे खोल स्क्रिप्ट रनिंग

import os 
working_dir = os.path.dirname(__file__) 
os.chdir(working_dir) 
import settings 
import django.core.management 
django.core.management.setup_environ(settings) 

मुझे एक IPython qtconsole हो जाता है Django खोल के लाभ के साथ।

+0

ipython की एक नई स्थापना के बाद यह अब मेरे लिए काम नहीं कर रहा है। ipython qtconsole अब -c ध्वज का सम्मान नहीं कर रहा है। मैंने थॉमस के जवाब पर स्विच किया है। – RickG

7

डॉक्स here कहना सूची:

यदि आप बल्कि हमें नहीं था ई manage.py, कोई समस्या नहीं है। बस DJANGO_SETTINGS_MODULE पर्यावरण परिवर्तक mysite.settings पर सेट करें और उसी निर्देशिका से पायथन चलाएं (या सुनिश्चित करें कि निर्देशिका पायथन पथ पर है, ताकि mysite works आयात करें)।

तो यह उस पर्यावरण चर सेट करने के लिए पर्याप्त होना चाहिए और फिर ipython qtconsole चलाएं। आप स्वचालित रूप से यह करने के लिए एक सरल स्क्रिप्ट बना सकते हैं।

+0

http://stackoverflow.com/q/7866515/213118, इसलिए आपको अपने django प्रोजेक्ट स्थान को पथ में भी जोड़ना होगा, और फिर भी django सेटिंग्स के साथ कुछ समस्या थी - जब मैं अपने मॉडल में सभी ऑब्जेक्ट्स सूचीबद्ध करना चाहता था तो मैंने कहा डीबी इंजन – agend

2

आप उस कोड को चेक कर सकते हैं जो खोल here चलाता है। आप देखेंगे कि कौन सा खोल चलाना है इसे कॉन्फ़िगर करने के लिए कोई जगह नहीं है।

आप क्या कर सकते हैं इस फ़ाइल की प्रतिलिपि बनाएँ, इसे shell_qt.py के रूप में नाम दें और इसे अपने प्रोजेक्ट के प्रबंधन/कमांड निर्देशिका में रखें। क्यूटी कंसोल चलाने के लिए इसे बदलें और फिर आप manage.py shell_qt चला सकते हैं।

/path/to/ipython 
qtconsole --pylab inline -c "run /path/to/my/site/shell.py" 

आप केवल --pylab inline भाग की जरूरत है अगर आप शांत इनलाइन matplotlib रेखांकन हैं:

+0

सेट नहीं किया है और मैं क्यूटी कंसोल चलाने के लिए कोड कैसे बदल सकता हूं - क्या आप इसके साथ मेरी मदद कर सकते हैं? – agend

0

आप django extensions स्थापित कर सकते हैं और फिर

python manage.py shell_plus --ipython 
+2

-1। यह आदेश टर्मिनल में केवल सभी मॉडलों को प्रीलोड किए जाने पर आईपीथॉन शुरू करता है। यह qtconsole मोड में आईपीथन शुरू नहीं करता है।तो यह इस सवाल के लिए सही जवाब नहीं है। – pemistahl

1

चलाने Django संस्करण 1.4 के बाद से, django.core.management.setup_environ() के उपयोग नहीं किया जाता।एक समाधान है कि दोनों IPython नोटबुक के लिए काम करता है और QTconsole इस (सिर्फ अपने Django परियोजना निर्देशिका के भीतर से इस पर अमल) है:

In [1]: from django.conf import settings 

In [2]: from mydjangoproject.settings import DATABASES as MYDATABASES 

In [3]: settings.configure(DATABASES=MYDATABASES) 

अद्यतन: आप Django 1.7 के साथ काम करते हैं, तो आप इसके साथ ही निष्पादित करने के लिए की जरूरत है निम्नलिखित:

In [4]: import django; django.setup() 

django.conf.settings.configure() का उपयोग करना, आप अपने प्रोजेक्ट के डेटाबेस सेटिंग्स निर्दिष्ट और फिर आप हमेशा की तरह अपने सभी मॉडलों के पहुँच सकते हैं।

यदि आप इन आयातों को स्वचालित करना चाहते हैं, तो आप उदा। चल रहा द्वारा एक IPython प्रोफ़ाइल बनाने:

ipython profile create mydjangoproject 

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

~/.ipython/profile_<mydjangoproject>/startup/ 

के अंतर्गत मिल बस वहाँ में एक स्क्रिप्ट डाल जो कोड ऊपर दिखाए गए, शायद एक try..except खंड से घिरा ImportError रों संभाल करने में शामिल है। फिर आप इस तरह दिया प्रोफाइल के साथ IPython शुरू कर सकते हैं:

ipython qtconsole --profile=mydjangoproject 

या

ipython notebook --profile=mydjangoproject 
0

मैं भी qtconsole में Django खोल खोलने के लिए करना चाहता था। अंदर खोज रहे हैं manage.py मेरे लिए समस्या का समाधान: लॉन्च IPython qtconsole, परियोजना आधार निर्देशिका के लिए सीडी और चलाएँ:

import os 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings") 

न अपने प्रोजेक्ट के नाम करने के लिए 'MyProject' बदलने के लिए भूल जाते हैं।

0

आप एक आदेश है कि आधार शेल कमांड प्रदान करता है और इसलिए तरह IPythonQtConsoleApp आयात बना सकते हैं:

from django.core.management.commands import shell 

class Command(shell.Command): 
    def _ipython(self): 
     """Start IPython Qt console""" 
     from IPython.qt.console.qtconsoleapp import IPythonQtConsoleApp 
     app = IPythonQtConsoleApp.instance() 
     app.initialize(argv=[]) 
     app.start() 

तो बस python manage.py qtshell का उपयोग करें:

yourapp/प्रबंधन में फ़ाइल qtshell.py बनाने/के साथ आदेश