2015-01-06 1 views
0

자습서 https://cloud.google.com/tools/repo/push-to-deploy-quickstart을 배포하기 위해 푸시 버튼을 사용하여 Google App Engine에 django 1.6 프로젝트를 배포하려고합니다. 프로젝트는 로컬에서 완벽하게 잘 작동하지만 프로젝트를 푸는 경우 앱 엔진은 django 모델을 가져올 때 django 0.96으로 폴백하는 것 같습니다. 아래 오류에서 볼 수 있습니다. 왜 이런 일이 생길까요?오류시 앱 엔진 빌드가 중단됩니다. 환경 변수 DJANGO_SETTINGS_MODULE이 정의되지 않았습니다.

os.environ['DJANGO_SETTINGS_MODULE'] = 'mango.settings' 

디렉토리 : 나는 또한 appengine_config.py 내부 코드 줄을 배치하는 시도

import sys 


sys.path.insert(0,'./Lib/site-packages') 
sys.path.insert(1,'./apps') 

import os 


#Delete current django version in production 
for key in [key for key in sys.modules if key.startswith('django')]: 
    del sys.modules[key] 


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


def application(environ, start_response): 
    try: 
     os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings' 
    except Exception: 
     pass 

    return _application(environ, start_response) 

====================================================================== 
    ERROR: Failure: EnvironmentError (Environment variable DJANGO_SETTINGS_MODULE is undefined.) 
    ---------------------------------------------------------------------- 
    Traceback (most recent call last): 
     File "/usr/lib/python2.7/dist-packages/nose/loader.py", line 414, in loadTestsFromName 
     addr.filename, addr.module) 
     File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 47, in importFromPath 
     return self.importFromDir(dir_path, fqname) 
     File "/usr/lib/python2.7/dist-packages/nose/importer.py", line 94, in importFromDir 
     mod = load_module(part_fqname, fh, filename, desc) 
     File "/var/jenkins/workspace/mango_app/apps/merchant/__init__.py", line 1, in <module> 
     from gateways import * 
     File "/var/jenkins/workspace/mango_app/apps/merchant/gateways/__init__.py", line 1, in <module> 
     from plugnpay import PlugnPay 
     File "/var/jenkins/workspace/mango_app/apps/merchant/gateways/plugnpay.py", line 5, in <module> 
     from apps.merchant.exceptions import MissingDataError 
     File "/var/jenkins/workspace/mango_app/apps/merchant/__init__.py", line 1, in <module> 
     from gateways import * 
     File "/var/jenkins/workspace/mango_app/apps/merchant/gateways/__init__.py", line 1, in <module> 
     from plugnpay import PlugnPay 
     File "/var/jenkins/workspace/mango_app/apps/merchant/gateways/plugnpay.py", line 6, in <module> 
     from apps.merchant.lib.api import PostGateway 
     File "/var/jenkins/workspace/mango_app/apps/merchant/lib/api.py", line 6, in <module> 
     from apps.merchant.gateways.core import Gateway 
     File "/var/jenkins/workspace/mango_app/apps/merchant/gateways/core.py", line 7, in <module> 
     from apps.merchant.gateways.models import PlugnpayResponseModel 
     File "/var/jenkins/workspace/mango_app/apps/merchant/gateways/models.py", line 1, in <module> 
     from django.db import models 
     File "/google-cloud-sdk/platform/google_appengine/lib/django-0.96/django/db/__init__.py", line 7, in <module> 
     if not settings.DATABASE_ENGINE: 
     File "/google-cloud-sdk/platform/google_appengine/lib/django-0.96/django/conf/__init__.py", line 28, in __getattr__ 
     self._import_settings() 
     File "/google-cloud-sdk/platform/google_appengine/lib/django-0.96/django/conf/__init__.py", line 53, in _import_settings 
     raise EnvironmentError, "Environment variable %s is undefined." % ENVIRONMENT_VARIABLE 
    EnvironmentError: Environment variable DJANGO_SETTINGS_MODULE is undefined. 

애플리케이션 제목을

application: instance-id 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 

env_variables: 
    DJANGO_SETTINGS_MODULE: 'myproject.settings' 

handlers: 
- url: .* 
    script: myproject.wsgi.application 

wsgi.py 구조

C:. 
│ .gitignore 
│ app.yaml 
│ appengine_config.py 
│ manage.py 
│ requirements.txt 
│ __init__.py 
├───apps 
├───lib 
│ __init__.py 
├───myproject 
│ app.py 
│ settings.py 
│ urls.py 
│ views.py 
│ wsgi.py 
│ __init__.py 

답변

0

App Engine에는 Django 1.6이 포함되어 있지 않습니다. 프로젝트에 추가하고 업로드해야합니다. 또는, 당신이 당신에게 당신의 애플리케이션 제목을 추가하여, GAE 장고 1.5을 사용할 수 있습니다

libraries: 
- name: django 
    version: "1.5" 

그렇지 않으면, 당신은 붙어 몇 년 전 GAE의 기본이었다 매우 이전 버전 (0.96)를 사용하여. 당신이 GAE에 포함 된 1.5가 아닌, 당신 자신의 장고를 사용하려고한다면, 나는 django-nonrel을 사용하는 것이 좋습니다.

위의 방법 중 하나를 수행하면 오류가 발생할 가능성이 높은 (wsgi.py의) 프로덕션에서 django 삭제를 제거 할 수 있습니다.

관련 문제