【发布时间】:2014-09-24 15:27:40
【问题描述】:
我正在尝试从 python 访问我的 MySQL 数据库。 它在 Openshift - Python 2.7、MySQL 5.5 上运行。 Django 和 Mysql 部署运行良好。 PHPMyAdmin 有效。
编辑 setup.py
setup(
name='YourAppName',
version='1.0',
description='OpenShift App',
author='Your Name',
author_email='example@example.com',
url='http://www.python.org/sigs/distutils-sig/',
install_requires=['Django<=1.4', 'MySQL-python',],
)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': os.environ['OPENSHIFT_APP_NAME'],
'USER': os.environ['OPENSHIFT_MYSQL_DB_USERNAME'],
'PASSWORD': os.environ['OPENSHIFT_MYSQL_DB_PASSWORD'],
'HOST': os.environ['OPENSHIFT_MYSQL_DB_HOST'],
'PORT': os.environ['OPENSHIFT_MYSQL_DB_PORT']
}
}
但是当我放这个
from django.db import connection
进入一些 py 脚本,我在日志中看到了这个:
mod_wsgi (pid=327977): Target WSGI script '/var/lib/openshift/542145275xxxxx9330000e6/app-root/runtime/repo/wsgi.py' cannot be loaded as Python module.
mod_wsgi (pid=327977): Exception occurred processing WSGI script '/var/lib/openshift/542145275xxxxx9330000e6/app-root/runtime/repo/wsgi.py'.
Traceback (most recent call last):
File "/var/lib/openshift/542145275xxxxx9330000e6/app-root/runtime/repo/wsgi.py", line 18, in <module>
from django.db import connection
File "/var/lib/openshift/542145275xxxxx9330000e6/python/virtenv/lib/python2.7/site-packages/Django-1.4-py2.7.egg/django/db/__init__.py", line 11, in <module>
if DEFAULT_DB_ALIAS not in settings.DATABASES:
File "/var/lib/openshift/542145275xxxxx9330000e6/python/virtenv/lib/python2.7/site-packages/Django-1.4-py2.7.egg/django/utils/functional.py", line 184, in inner
self._setup()
File "/var/lib/openshift/542145275xxxxx9330000e6/python/virtenv/lib/python2.7/site-packages/Django-1.4-py2.7.egg/django/conf/__init__.py", line 40, in _setup
raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.
问题的原因可能是什么? 感谢您的任何回答。
编辑: 在部署中,没有 settings.py(对此的引用应该在 DJANGO_SETTINGS_MODULE 中,对吗?所以现在我创建了一个。然后我像这样更改了变量:
export DJANGO_SETTINGS_MODULE=var.lib.openshift.542145275xxxxx9330000e6.app-root.runtime.repo.settings
我尝试了不同的值、子文件夹等。我不确定什么是正确的值。
我从 setup.py 中删除了 DATABASES 并将它们移动到我新创建的 settings.py 中。 它看起来像这样:
import os
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': os.environ['OPENSHIFT_APP_NAME'],
'USER': os.environ['OPENSHIFT_MYSQL_DB_USERNAME'],
'PASSWORD': os.environ['OPENSHIFT_MYSQL_DB_PASSWORD'],
'HOST': os.environ['OPENSHIFT_MYSQL_DB_HOST'],
'PORT': os.environ['OPENSHIFT_MYSQL_DB_PORT']
}
}
没有变化。 为什么 DJAGNO_SETTING_MODULE 仍然“未定义”(即使定义错误)?
【问题讨论】:
-
无法导入设置的哪一部分,因为环境变量 DJANGO_SETTINGS_MODULE 未定义。让你困惑吗?
-
好吧,我没写好。我该怎么做才能正确定义 DJANGO_SETTINGS_MODULE?
-
@PařezPařez:更具体一点。你是如何研究这个问题的?你采取了哪些措施? (我假设您已经询问过 Google 如何设置环境变量。我还假设您已经咨询了 django 文档以了解如何使用 DJANGO_SETTINGS_MODULE)。
标签: python mysql django openshift