2

我有一个 Python 文件,它是 Django 框架的一部分,名为 facade.py

from django.conf import settings
from .gateway import Gateway

class Facade(object):


def __init__(self):
    self.gateway = Gateway(
        settings.password,
        settings.username,
        )

我想在我的终端窗口中测试这段代码。这是我尝试过的:

within virutal-env
python
>>> from my.apps.app.facade import Facade
>>> object = Facade()

但这给了我错误 ImportError: Settings cannot be importing,因为环境变量 DJANGO_SETTINGS_MODULE 未定义。

为什么?

4

4 回答 4

15

您不应该在普通的 Python shell 中执行此操作。使用配置的 Django 启动 shell,./manage.py shell而不是仅仅python.

于 2013-09-19T12:51:17.340 回答
1

由于此函数使用 Django,因此仅在 python shell 中运行它是不够的。有很多东西需要加载,比如设置、模型等,Django 文件才能运行。

您无法从 python shell 访问和运行 django 项目。Django 不知道你想从事什么项目。

您必须执行以下操作之一:

  1. python manage.py shell
  2. 将操作系统中的 DJANGO_SETTINGS_MODULE 环境变量设置为 mysite.settings
  3. 在 python 解释器中使用 setup_environ:

    from django.core.management import setup_environ
    from mysite import settings
    setup_environ(settings)
    

第一个是最简单也是最好的方法。在 django shell 中运行您的代码。

于 2013-09-19T12:55:16.083 回答
0

尝试添加这个:

from django.conf import settings

if not settings.configured:
    settings.configure()

祝你好运!

于 2013-09-19T12:50:16.297 回答
0

就像错误消息说的那样,你必须定义DJANGO_SETTINGS_MODULE环境变量:

在外壳中:export DJANGO_SETTINGS_MODULE=settings.module

然后启动 Python。

于 2013-09-19T12:56:06.540 回答