2012-01-11 8 views
26

मुझे अपने Django प्रोजेक्ट के लिए DJANGO_SETTINGS_MODULE सेट करने में कुछ परेशानी हो रही है।मैं अपने Django प्रोजेक्ट के लिए DJANGO_SETTINGS_MODULE को सही ढंग से कैसे सेट कर सकता हूं (मैं वर्चुअलएन्व का उपयोग कर रहा हूं)?

मेरे पास ~/dev/django-project पर एक निर्देशिका है। इस निर्देशिका में मेरे पास वर्चुअल एनवायरनमेंट है, जिसे मैंने वर्चुअलएन्व के साथ स्थापित किया है, और "ब्लोसम" नामक एक डीजेंगो प्रोजेक्ट जिसे "एनोरा" कहा जाता है। रनिंग ~/dev/django-project/ से tree -L 3 मुझे पता चलता है:

. 
├── Procfile 
├── blossom 
│   ├── __init__.py 
│   ├── __init__.pyc 
│   ├── fixtures 
│   │   └── initial_data_test.yaml 
│   ├── manage.py 
│   ├── onora 
│   │   ├── __init__.py 
│   │   ├── __init__.pyc 
│   │   ├── admin.py 
│   │   ├── admin.pyc 
│   │   ├── models.py 
│   │   ├── models.pyc 
│   │   ├── tests.py 
│   │   └── views.py 
│   ├── settings.py 
│   ├── settings.pyc 
│   ├── sqlite3-database 
│   ├── urls.py 
│   └── urls.pyc 
├── blossom-sqlite3-db2 
├── requirements.txt 
└── virtual_environment 
    ├── bin 
    │   ├── activate 
    │   ├── activate.csh 
    │   ├── activate.fish 
    │   ├── activate_this.py 
    │   ├── django-admin.py 
    │   ├── easy_install 
    │   ├── easy_install-2.7 
    │   ├── gunicorn 
    │   ├── gunicorn_django 
    │   ├── gunicorn_paster 
    │   ├── pip 
    │   ├── pip-2.7 
    │   ├── python 
    │   └── python2.7 -> python 
    ├── include 
    │   └── python2.7 -> /System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 
    └── lib 
     └── python2.7 

मैं आदेश

django-admin.py dumpdata 

मेरे दृष्टिकोण cd ~/dev/django-project चलाने के लिए और फिर source virtual_environment/bin/activate चलाने के लिए और फिर से चलाने के django-admin.py dumpdata है साथ डेटाबेस से अपने डेटा डंप करने के लिए कोशिश कर रहा हूँ

हालांकि, मुझे निम्न त्रुटि मिल रही है:

ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined. 

मैं कुछ googling किया था और इस पृष्ठ मिला: https://docs.djangoproject.com/en/dev/topics/settings/#designating-the-settings

जो मुझे बताया कि

When you use Django, you have to tell it which settings you're using. Do this by using an environment variable, DJANGO_SETTINGS_MODULE. The value of DJANGO_SETTINGS_MODULE should be in Python path syntax, e.g. mysite.settings. Note that the settings module should be on the Python import search path.

Setting DJANGO_SETTINGS_MODULE under virtualenv? पर एक सुझाव के बाद मैं लाइनों

export DJANGO_SETTINGS_MODULE="blossom.settings" 
echo $DJANGO_SETTINGS_MODULE 

संलग्न virtual_environment को/bin/सक्रिय। अब, जब मैं आदेश आभासी वातावरण को सक्रिय करने में सक्रिय आदेश चला, मैं उत्पादन रीडिंग प्राप्त:

DJANGO_SETTINGS_MODULE set to blossom.settings 

यह मेरे लिए अच्छा लग रहा है, लेकिन अब समस्या मैं यह है कि

django-admin.py dumpdata 

चल निम्न त्रुटि देता है:

ImportError: Could not import settings 'blossom.settings' (Is it on sys.path?): No module named blossom.settings 

मैं क्या गलत कर रहा हूं? मैं sys.path कैसे देख सकता हूं? यह कैसे काम करना चाहिए?

धन्यवाद।

उत्तर

40

आरंभिक परियोजना निर्माण के अलावा किसी अन्य चीज़ के लिए django-admin.py चलाएं। उसके बाद सबकुछ के लिए, manage.py का उपयोग करें, जो सेटिंग ढूंढने का ख्याल रखता है।

+1

धन्यवाद - 'पायथन ब्लॉसम/manage.py dumpdata' अपेक्षित के रूप में काम किया। – Deonomo

+0

सच है। फिर django दस्तावेज़ क्यों कह रहे हैं "या तो कॉन्फ़िगर() या DJANGO_SETTINGS_MODULE में से एक का उपयोग करें। दोनों नहीं, और ** न तो **।" ? https://docs.djangoproject.com/en/dev/topics/settings/ – lajarre

+7

वर्तमान सोच - जैसा कि ["DeployDjango" साइट] में दिखाया गया है (http://www.deploydjango.com/django_project_structure/index.html) और हालिया * [Django के दो स्कूप्स] (http://django.2scoops.org/) * पुस्तक - यह है कि 'django-admin.py' अलग सेटिंग्स के साथ पूरी तरह से काम करता है, और वास्तव में' प्रबंधन का उपयोग करने के लिए बेहतर है। py'। – supervacuo

15

मुझे अभी भी एक ही त्रुटि का सामना करना पड़ा, और आखिरकार काम करने में कामयाब रहा ((Is it on sys.path?)ImportError में)। इससे पहले कि आप django-admin.py चलाने ~/dev/django-project निर्देशिका से क्या प्रलेखन द्वारा

Note that the settings module should be on the Python import search path.

का मतलब है ऐसा करने के लिए है, को चलाने

$ export PYTHONPATH=$PYTHONPATH:$PWD 

-

आप PYTHONPATH अपनी परियोजना निर्देशिका जोड़ने की जरूरत है।

आप इस आदेश को अपने virtualenv के source स्क्रिप्ट को (अपनी परियोजना के लिए वास्तविक पथ, अर्थात~/dev/django-project साथ $PWD की जगह) जोड़ सकते हैं। यदि आप किसी बिंदु पर virtualenvwrapper पर अग्रिम करना चुनते हैं (जो इस तरह की स्थिति के लिए डिज़ाइन किया गया है), तो आप ऑटो-जेनरेट postactivate हुक स्क्रिप्ट में export PY... लाइन जोड़ सकते हैं।

mkdjangovirtualenv आपके लिए पाइथन पथ में उपयुक्त प्रविष्टि जोड़कर, इसे और भी स्वचालित करता है, लेकिन मैंने इसे स्वयं परीक्षण नहीं किया है।

+0

गंदा। लेकिन काम कर रहे और उपयोगी। आप समस्याओं को बाधित करने के लिए प्रोत्साहित कर रहे हैं। यदि sys.path पर कुछ नहीं है, तो इसका मतलब है कि इसे पैक और स्थापित करने की आवश्यकता है, sys.path पर हैक नहीं किया गया है। मुझे पता है, मैं एक और समस्या हल कर रहा हूं, दो और बना रहा हूं। – bartekbrak

+0

दिलचस्प: आपको लगता है कि एक विकास में Django प्रोजेक्ट को 'sys.path' में जोड़ा जाना चाहिए, अगर' manage.py', 'django-admin.py' के' --pythonpath' विकल्प, या नहीं 'पायथनपथ' env var (जिनमें से कोई भी दूसरों की तुलना में "गंदे" नहीं लगता ..) – supervacuo

+1

इसे पैकेज करें (setup.py बनाएँ) और पाइप inestall [-e] के माध्यम से स्थापित करें। लंबे स्पष्टीकरण पर एक नज़र डालें: https://gist.github.com/bartekbrak/42d59fd43a9af14a0cc5 – bartekbrak

10

यूनिक्स की तरह मशीन पर आप बस इस तरह virtualenv उपनाम और बजाय हर टाइप की अन्य नाम का उपयोग कर सकते हैं:

.bashrc

alias cool='source /path_to_ve/bin/activate; export DJANGO_SETTINGS_MODULE=django_settings_folder.settings; cd path_to_django_project; export PYTHONPATH=$PYTHONPATH:$PWD'

+3

यह वास्तव में अन्य उत्तरों की तुलना में मेरी समस्या का समाधान करता है। धन्यवाद! –

0

मैं जानता हूँ कि बहुत सारे जवाब देखते हैं, लेकिन यह एक काम किया मेरे लिए सिर्फ रिकॉर्ड के लिए।

  1. अपने .virtual_env फ़ोल्डर पर नेविगेट करें जहां सभी वर्चुअल वातावरण हैं।
  2. वातावरण फ़ोल्डर में
  3. जाओ अपनी परियोजना के लिए विशिष्ट
  4. संलग्न "निर्यात DJANGO_SETTINGS_MODULE = .settings या" निर्यात DJANGO_SETTINGS_MODULE = .settings.local "अगर आप एक अलग सेटिंग्स एक सेटिंग में संग्रहीत फ़ाइल का उपयोग कर रहे फ़ोल्डर
0

मेरा पसंदीदा विकल्प सेटिंग्स फ़ाइल जैसे एक अजगर पैकेज वाक्य रचना में manage.py के क्रम पैरामीटर के रूप में गुजर रहा है,:

python manage.py runserver --settings folder.filename 

अधिक जानकारी django docs

संबंधित मुद्दे