2011-03-29 10 views
9

में settings.py के अलावा अन्य फाइल मैं Django में एक अलग सेटिंग्स फ़ाइल का उपयोग करना चाहते हैं - विशेष रूप से settings_prod - अभी तक जब भी मैं --settings=settings_prod के साथ एक syncdb करने की कोशिश है, यह शिकायत:एक सेटिंग का उपयोग करना Django

python2.6 manage.py syncdb --settings=settings_prod 
Error: Can't find the file 'settings.py' in the directory containing 'manage.py'. It appears you've customized things. 
You'll have to run django-admin.py, passing it your settings module. 
(If the file settings.py does indeed exist, it's causing an ImportError somehow.) 

मैंने पर्यावरण चर DJANGO_SETTINGS_MODULE=settings_prod को समाप्त करने की कोशिश भी की है।

संपादित करें: मैं भी वातावरण चर मेरी WSGI फ़ाइल में, की स्थापना की है भी कोई अंत नहीं करने के लिए:

import os 
import sys 

from django.core.handlers.wsgi import WSGIHandler 

os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings_prod' 
application = WSGIHandler() 

सुझाव?

+1

और WSGI साथ इसे सही ढंग से काम कर रहा है? मुझे पहले यह समस्या थी, लेकिन केवल 'manage.py' – pajton

+0

के साथ मुझे ऐसा लगता है, क्योंकि यह कम से कम एक यूआरएल प्रदर्शित करता है जिसे मैंने सेट किया है। मैं इसे सिंकडीबी पर नहीं ले सकता। –

+0

ठीक है, किसी ने अभी जवाब दिया कि मेरे मन में क्या था :)। 'import.py' में 'आयात सेटिंग्स' को हार्डकोड किया गया है, इसलिए इस सरल दृष्टिकोण के साथ कोई भाग्य नहीं है। – pajton

उत्तर

9

मुझे पता है कि कोई बात नहीं क्या आप manage.py साथ करते हैं, आप उस त्रुटि प्राप्त करने के लिए जा रहे हैं, क्योंकि manage.pysettings के एक रिश्तेदार आयात करता है:

try: 
    import settings # Assumed to be in the same directory. 

http://docs.djangoproject.com/en/dev/ref/django-admin/#django-admin-option---settings

Note that this option is unnecessary in manage.py, because it uses settings.py from the current project by default.

आप चाहिए django-admin.py syncdb --settings=mysettings के बजाय

+1

मैंने कोशिश की है, लेकिन मुझे मिलता है: 'आयात त्रुटि: सेटिंग आयात नहीं कर सका' सेटिंग्स_प्रोड '(क्या यह sys.path पर है?): सेटिंग्स_प्रोड नामक कोई मॉड्यूल नहीं है - लेकिन यह मेरी डब्लूएसजीआई फ़ाइल –

+0

के अनुसार होना चाहिए, ठीक है, वास्तव में मैंने इसे शामिल करने के लिए डब्लूएसजीआई फ़ाइल को अभी संशोधित किया है: 'sys.path.append ("/home/username/webapps/django/project ")', लेकिन अभी भी कोई bueno। –

+0

यह सुनिश्चित करने के लिए कि आपका पथ सही तरीके से स्थापित है, django-admin.py को --pythonpath तर्क को पार करने का प्रयास करें। – Wogan

10

settings मोड बनाने का प्रयास करें ule।

  1. manage.py रूप में एक ही निर्देशिका में settings फ़ोल्डर बनाएँ।
  2. उस फ़ोल्डर में अपनी अलग सेटिंग्स फ़ाइलों को रखें (उदा। base.py और prod.py)।
  3. __init__.py बनाएं और जो भी सेटिंग्स आप अपने डिफ़ॉल्ट के रूप में उपयोग करना चाहते हैं उसे आयात करें। उदाहरण के लिए, अपने __init__.py फ़ाइल इस प्रकार दिखाई देंगे:

    from base import * 
    
  4. अपनी परियोजना चलाने के लिए और सेटिंग को ओवरराइड:

    $ python2.6 manage.py syncdb --settings=settings.prod 
    
0

इस तुम्हारी मदद करेगा:

  • बनाने आपकी मूल सेटिंग्स.py फ़ाइल के साथ एक और फ़ाइल "setting_prod.py"।

  • सेटिंग_prod.py फ़ाइल में, जिस सेटिंग को चलाने की आवश्यकता है उसे लिखें।

  • फिर अपनी सेटिंग्स.py फ़ाइल में सेटिंग_prod.py फ़ाइल आयात करें।

पूर्व के लिए। settings.py:

VARIABLE = 1 

import setting_prod 

setting_prod.py

VARIABLE = 2 

settings.py फ़ाइल में setting_prod.py फ़ाइल आयात करने के बाद, चर "1" से नया मान को करने के लिए "2" सेट हो जाएगा।

+0

आपके पास अंत में .py क्यों है? मुझे त्रुटि मिली है 'आयात त्रुटि: कोई मॉड्यूल नामित नहीं है' और VARIABLE स्ट्रिंग को वांछित नहीं किया जाएगा जैसा आप चाहते हैं। यदि आपके पास 'importing_prod' आयात होगा, तो यह सेटिंग_प्रोड होगा। VARIABLE – holms

+0

यदि आप 'सेटिंग_प्रोड आयात से' आपको वह व्यवहार मिलेगा जिसे आप ढूंढ रहे हैं लेकिन यह कम पाइथोनिक है। – IamnotBatman

0

हम अलग-अलग सेटिंग्स फ़ाइल सेट करने के लिए इस विधि का उपयोग कर सकते हैं, उदाहरण के लिए, मैं अपने यूनिट परीक्षण (settings_unit_test.py) के लिए अलग-अलग सेटिंग्स फ़ाइल का उपयोग करता हूं। इसके अलावा मेरे पास विभिन्न आधारभूत संरचना पर्यावरण सेटिंग्स_dev.py, settings_test.py और settings_prod.py के लिए अन्य सेटिंग्स फ़ाइल हैं।

विंडोज़ वातावरण में (linux में किया एक ही कर सकते हैं और साथ ही)

set DJANGO_SETTINGS_MODULE=settings_unit_test 
set PYTHONPATH=<path_of_your_directory_where_this_file_'settings_unit_test.py'_is_kept> 
संबंधित मुद्दे