4

Может ли кто-нибудь увидеть, что я делаю неправильно здесь? Независимо от того, что я пытаюсь, я не могу заставить его правильно определять настройки для Django. Прекрасно работает при запуске вручную в терминале активного виртуального компьютера.Супервизор, Celery, Virtualenvwrapper, Django: Не удалось импортировать настройки django, даже когда pythonpath добавлен в среду

Руководитель

[program:celery_beetlejuice] 
command = /home/padraic/.virtualenvs/beetlejuice/bin/python /home/padraic/CodeDev/beetlejuice/beetlejuice_django/manage.py celeryd -B -E -l INFO 
directory=/home/padraic/CodeDev/beetlejuice/beetlejuice_django 
environment=PYTHONPATH="/home/padraic/CodeDev/beetlejuice/beetlejuice_django", DJANGO_SETTINGS_MODULE="beetlejuice_django.settings" 
user = padraic 
autostart=true 
autorestart=true 
stdout_logfile=/home/padraic/CodeDev/beetlejuice/beetlejuice_django/logs/celeryd.log 
stderr_logfile=/home/padraic/CodeDev/beetlejuice/beetlejuice_django/logs/celeryd.log 
redirect_stderr=true 
priority=998 
numprocs=1 

Traceback

Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/home/padraic/.virtualenvs/beetlejuice/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 453, in execute_from_command_line 
    utility.execute() 
    File "/home/padraic/.virtualenvs/beetlejuice/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/home/padraic/.virtualenvs/beetlejuice/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 263, in fetch_command 
    app_name = get_commands()[subcommand] 
    File "/home/padraic/.virtualenvs/beetlejuice/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 109, in get_commands 
    apps = settings.INSTALLED_APPS 
    File "/home/padraic/.virtualenvs/beetlejuice/local/lib/python2.7/site-packages/django/conf/__init__.py", line 53, in __getattr__ 
    self._setup(name) 
    File "/home/padraic/.virtualenvs/beetlejuice/local/lib/python2.7/site-packages/django/conf/__init__.py", line 48, in _setup 
    self._wrapped = Settings(settings_module) 
    File "/home/padraic/.virtualenvs/beetlejuice/local/lib/python2.7/site-packages/django/conf/__init__.py", line 134, in __init__ 
    raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e)) 
ImportError: Could not import settings 'beetlejuice_django.settings' (Is it on sys.path?): 

ответ

4

... Вздох выяснили ошибку ...

Так! У меня есть файл, который содержит settings.py:

[settings.py] 
import os 
BEETLEJUICE_STATE = os.environ.get('BTJC_STATE', None) 

if BEETLEJUICE_STATE == 'LOCAL': 
    from local_settings import * 
elif BEETLEJUICE_STATE == 'DEV': 
    from development_settings import * 
elif BEETLEJUICE_STATE == 'PROD': 
    from production_settings import * 
else: 
    raise ImportError 

<aside>
... который имел обыкновение быть правильный способ делать вещи (или так мне сказали). Я планирую перейти на так, что Одри и Дэнни рекомендуют в Два совка Джанго, суть которого являются:

settings/ 
    __init__.py 
    base.py 
    local.py 
    test.py 
    production.py 

... и явно вызывать мои файлы настроек теперь, например
python manage.py runserver --settings='settings.production'
... который импортирует из base.py и имеет все параметры, относящиеся к конкретной продукции.
</aside>

... и я был BTJC_STATE экспортируется в файл virtualenvwrapper postactivate, за исключением того, что, запустив celeryd через супервизора я не ничего активации и, таким образом, пропуская этот файл целиком! Это подняло ImportError, но я не понимал, что это было где-то из = (

Добавление строки, объясняющей исключение, является хорошей идеей ... и, по-видимому, с использованием ImproperlyConfigured - лучший способ повысить эту проблему. Таким образом, изменив одну строку ниже в моем файле .conf, он начал работать отлично.

[program:celery_beetlejuice] 
<snip> 
environment=BTJC_STATE='LOCAL' 
<snip> 

, так что работает сейчас, и я счастлив, но мне нужно найти хороший способ установки переменных окружения (например, базы данных пароли, ключи api и т. д.), которые будут хорошо работать для неактивного виртуального виртуального пользователя.

Все советы добро пожаловать на это, напишите мне, и я обновлю это с помощью решения =)

 Смежные вопросы

  • Нет связанных вопросов^_^