2016-03-25 12 views
1

Nicht sicher, was schief gelaufen ist. Wenn ich auf lokaler Maschine mitDjango ImportError: Nein Module namens apps beim Ausführen von Openshift

laufen alle sind ok. Aber wenn ich auf OpenShift lief, bekam ich 500 Internal Server Error.

rhc tail -a maid 

zeigt

==> app-root/logs/python.log <== 
[Fri Mar 25 17:40:12 2016] [error] [client 127.3.227.129] File "/var/lib/openshift/56f1365889f5cf9b07000054/python/virtenv/lib/python2.7/site-packages/Django-1.9.2-py2.7.egg/django/__init__.py", line 18, in setup 
[Fri Mar 25 17:40:12 2016] [error] [client 127.3.227.129]  apps.populate(settings.INSTALLED_APPS) 
[Fri Mar 25 17:40:12 2016] [error] [client 127.3.227.129] File "/var/lib/openshift/56f1365889f5cf9b07000054/python/virtenv/lib/python2.7/site-packages/Django-1.9.2-py2.7.egg/django/apps/registry.py", line 85, in populate 
[Fri Mar 25 17:40:12 2016] [error] [client 127.3.227.129]  app_config = AppConfig.create(entry) 
[Fri Mar 25 17:40:12 2016] [error] [client 127.3.227.129] File "/var/lib/openshift/56f1365889f5cf9b07000054/python/virtenv/lib/python2.7/site-packages/Django-1.9.2-py2.7.egg/django/apps/config.py", line 116, in create 
[Fri Mar 25 17:40:12 2016] [error] [client 127.3.227.129]  mod = import_module(mod_path) 
[Fri Mar 25 17:40:12 2016] [error] [client 127.3.227.129] File "/opt/rh/python27/root/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module 
[Fri Mar 25 17:40:12 2016] [error] [client 127.3.227.129]  __import__(name) 
[Fri Mar 25 17:40:12 2016] [error] [client 127.3.227.129] ImportError: No module named mblog.apps 
82.28.196.48 - - [25/Mar/2016:13:40:11 -0400] "GET/HTTP/1.1" 500 617 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/601.4.4 (KHTML, like Gecko) Version/9.0.3 Safari/601.4.4" 

ich bereits mblog/init Py definiert als

default_app_config = 'mblog.apps.MblogConfig' 

und apps.py als

from __future__ import unicode_literals 
from django.apps import AppConfig 
class MblogConfig(AppConfig): 
    name = 'mblog' 
    def ready(self): 
     from .defaults import * 

wsgi/Anwendung haben müssen folgende Einstellung:

sys.path.append(os.path.join(os.environ['OPENSHIFT_REPO_DIR'], 'wsgi', 'MaidProject', 'mblog')) 
os.environ['DJANGO_SETTINGS_MODULE'] = 'MaidProject.lineblog.settings' 

Die Dateistruktur ist:

MaidProject 
- __init__.py 
- lineblog 
    - __init__.py 
    - settings.py 
    - urls.py 
    - wsgi.py 
- manage.py 
- mblog 
    - __init__.py 
    - admin.py 
    - apps.py 
    - default.py 
    - ... 
    - locale (dir) 
    - templates (dir) 

ich dieses Problem nicht, wenn ich meine frühere Django 1.6, aber jetzt arbeite an Django 1.9 mit den neuen Apps Sachen drücken. Probier ein paar Dinge aus und komm nirgendwo hin. Jeder Zeiger wird sehr geschätzt. Der Fehler ist bei OpenShift, aber wenn auf dem lokalen Computer ausgeführt wird, gibt es kein Problem. Ich muss irgendwo etwas falsch gemacht haben, aber jetzt habe ich ein paar Tage damit verbracht und komme immer noch nirgends hin. Wirklich frustriert. Vielen Dank im Voraus.

+1

Versuchen Sie, PYTHONPATH Umgebungsvariable umfassen ‚MaidProject‘ und sehen, ob das funktioniert. –

Antwort

0

Vielen Dank an Graham für den Hinweis auf den PYTHONPATH. Das hat das Problem behoben. Es stellt sich heraus, dass der Weg stelle ich falsch war und den Wechsel von

sys.path.append(os.path.join(os.environ['OPENSHIFT_REPO_DIR'], 'wsgi', 'MaidProject', 'mblog')) 

auf die folgenden, den Trick getan hat:

sys.path.append(os.path.join(os.environ['OPENSHIFT_REPO_DIR'], 'wsgi')) 
sys.path.append(os.path.join(os.environ['OPENSHIFT_REPO_DIR'], 'MaidProject'))