2017-02-15 1 views
2

Actuellement, mes journaux d'erreurs crachent sur rien, mais cette erreur:Déploiement Django PythonAnywhere et ne peuvent pas utiliser secret_key de l'environnement vars bien qu'il soit réglé

Error running WSGI application 
KeyError: 'SECRET_KEY' 
    File "/var/www/www_optranslations_net_wsgi.py", line 24, in <module> 
    application = get_wsgi_application() 

    File "/home/optranslations/.virtualenvs/optl/lib/python3.5/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application 
    django.setup(set_prefix=False) 

    File "/home/optranslations/.virtualenvs/optl/lib/python3.5/site-packages/django/__init__.py", line 22, in setup 
    configure_logging(settings.LOGGING_CONFIG, settings.LOGGING) 

    File "/home/optranslations/.virtualenvs/optl/lib/python3.5/site-packages/django/conf/__init__.py", line 53, in __getattr__ 
    self._setup(name) 

    File "/home/optranslations/.virtualenvs/optl/lib/python3.5/site-packages/django/conf/__init__.py", line 41, in _setup 
    self._wrapped = Settings(settings_module) 

    File "/home/optranslations/.virtualenvs/optl/lib/python3.5/site-packages/django/conf/__init__.py", line 97, in __init__ 
    mod = importlib.import_module(self.SETTINGS_MODULE) 

    File "/home/optranslations/translation-site/optranslations/settings.py", line 24, in <module> 
    SECRET_KEY = os.environ.get('SECRET_KEY') 

    File "/home/optranslations/.virtualenvs/optl/lib/python3.5/os.py", line 725, in __getitem__ 
    raise KeyError(key) from None 

Alors, de ce que je comprends, il ne peut pas recherchez la variable d'environnement SECRET_KEY. En vérifiant à la fois le terminal bash et la commande os.environ dans l'interpréteur interactif Python, la clé est correctement définie.

De plus, j'ai essayé les deux:

SECRET_KEY = os.environ.get('SECRET_KEY') 

Et:

SECRET_KEY = os.getenv('SECRET_KEY') 

En utilisant le même code pour une impression sur la console python interactif produit la bonne clé.

Et il est défini dans mon dossier wsgi selon les instructions de PythonAnywhere comme ceci:

os.environ["SECRET_KEY"] = 'secretkeyhere' 

En plus dans mon dossier de postactivate pour mon virtualenv:

export SECRET_KEY="secretkeyhere" 

Alors, qu'est-ce qui se passe? Il ne cesse de cracher cette erreur dans mon journal et je ne trouve rien en ligne ou même commencer à comprendre ce que c'est. Je suis sûr que c'est quelque chose que je néglige, cependant. Je peux ajouter plus de code que vous pensez est nécessaire, alors s'il vous plaît faites le moi savoir.

Modifier

Intéressant, maintenant je reçois ceci:

2017-02-15 07:46:27,883 :Error running WSGI application 
2017-02-15 07:46:27,884 :django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty. 
2017-02-15 07:46:27,884 : File "/var/www/www_optranslations_net_wsgi.py", line 24, in <module> 
2017-02-15 07:46:27,885 : application = get_wsgi_application() 
2017-02-15 07:46:27,885 : 
2017-02-15 07:46:27,885 : File "/home/optranslations/.virtualenvs/optl/lib/python3.5/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application 
2017-02-15 07:46:27,885 : django.setup(set_prefix=False) 
2017-02-15 07:46:27,885 : 
2017-02-15 07:46:27,885 : File "/home/optranslations/.virtualenvs/optl/lib/python3.5/site-packages/django/__init__.py", line 22, in setup 
2017-02-15 07:46:27,885 : configure_logging(settings.LOGGING_CONFIG, settings.LOGGING) 
2017-02-15 07:46:27,885 : 
2017-02-15 07:46:27,886 : File "/home/optranslations/.virtualenvs/optl/lib/python3.5/site-packages/django/conf/__init__.py", line 53, in __getattr__ 
2017-02-15 07:46:27,886 : self._setup(name) 
2017-02-15 07:46:27,886 : 
2017-02-15 07:46:27,886 : File "/home/optranslations/.virtualenvs/optl/lib/python3.5/site-packages/django/conf/__init__.py", line 41, in _setup 
2017-02-15 07:46:27,886 : self._wrapped = Settings(settings_module) 
2017-02-15 07:46:27,886 : 
2017-02-15 07:46:27,886 : File "/home/optranslations/.virtualenvs/optl/lib/python3.5/site-packages/django/conf/__init__.py", line 116, in __init__ 
2017-02-15 07:46:27,886 : raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.") 

Alors maintenant, il est ImproperlyConfigured. Cependant, tout ce que j'ai fait a été de désactiver mon virtualenv et de le recharger pour activer à nouveau le script post-activation. Je peux toujours écrire $ SECRET_KEY et le voir très bien (et getenv dans la console interactive, aussi).

J'ai essayé aussi django shell en exécutant les éléments suivants:

python manage.py shell 
from django.conf import settings 
print(settings.SECRET_KEY) 

Et, bien sûr, il imprime la bonne clé.

Répondre

1

Eh bien, la réponse s'est avérée embarrassante. Mon dossier WSGI avait mes déclarations de os.environ dessous de ces lignes:

from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 

Ils devaient être au-dessus de ces lignes, et instantanément a travaillé, pour des raisons évidentes regardant en arrière maintenant.