【问题标题】:Django ImportError: No Module named apps when running on OpenshiftDjango ImportError:在 Openshift 上运行时没有名为应用程序的模块
【发布时间】:2016-03-25 17:55:01
【问题描述】:

不知道出了什么问题。当我在本地机器上运行时使用

 python manage.py runserver

一切正常。但是在 Openshift 上运行时,我得到 500 Internal Server Error。

rhc tail -a maid

表演

==> 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"

我已经有 mblog/init.py 定义为

default_app_config = 'mblog.apps.MblogConfig'

apps.py 为

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

wsgi/application 有如下设置:

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

文件结构为:

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)

当我推送以前的 Django 1.6 但现在使用新应用程序的东西在 Django 1.9 上工作时,我没有遇到这个问题。尝试几件事,却一无所获。任何指针都非常感谢。错误出现在 Openshift 上,但在本地机器上运行时,没有问题。我一定在某处做错了什么,但现在花了几天时间,仍然没有得到任何结果。真的很沮丧。 提前致谢。

【问题讨论】:

  • 尝试将 PYTHONPATH 环境变量设置为包含“MaidProject”,看看是否可行。

标签: django openshift importerror


【解决方案1】:

感谢 Graham 指出 PYTHONPATH。这已经解决了这个问题。原来我设置的路径不正确,从

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

到下面已经成功了:

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

【讨论】:

    猜你喜欢
    • 2017-01-24
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 2015-12-04
    • 1970-01-01
    • 2014-11-10
    • 2018-03-10
    相关资源
    最近更新 更多