【问题标题】:Why can't python read my environment variables?为什么python不能读取我的环境变量?
【发布时间】:2013-02-06 23:14:23
【问题描述】:

我正在使用 Django,我正在尝试设置几个环境变量来定义要导入的设置。

我使用以下文件夹层次结构:

project_folder>
    app_folder>
    project_specific_files>
        settings>
            base.py
            local.py

我使用Kenneth Reitz's autoenv 来加载我的环境变量。我知道它工作正常,因为我可以输入 $ echo $DJANGO_SETTINGS_MODULE 并看到以下输出:

project_specific_files.settings.local

但是当我运行$django-admin.py runserver 时,我得到:

ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.

另外,如果我进入 python shell 并尝试打印出环境变量,我会得到以下信息:

Python 2.7.3 (default, Dec 22 2012, 21:14:12) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> print os.environ['HOME']
/home/marco
>>> print os.environ['DJANGO_SETTINGS_MODULE']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/marco/.virtualenvs/myproject/lib/python2.7/UserDict.py", line 23, in __getitem__
    raise KeyError(key)
KeyError: 'DJANGO_SETTINGS_MODULE'

任何人都知道可能出了什么问题吗?谢谢!

另外,我可以输入$ django-admin.py runserver --settings='project_specific_files.settings.local,一切都会正常工作 0.o

【问题讨论】:

  • 每个文件夹中都有__init__.py 文件?
  • @PepperoniPizza 是的,我只是在项目根文件夹中缺少一个 init.py,不确定是否需要。我添加它只是为了检查它并没有工作。

标签: python linux django environment-variables


【解决方案1】:

你的环境变量导出了吗?

可能环境变量是在当前shell中定义的,但没有标记为要导出到子进程(python解释器,或Django)。

使用 bash,运行:export DJANGO_SETTINGS_MODULE

【讨论】:

  • 是的..这就是问题..我想知道为什么 autoenv 不导出变量。我认为它只是采购它们。我做错了吗?
  • IIUC autoenv 仅来源 .env。因此,如果要导出.env 文件中的变量,那么export 他们!只需写export DJANGO_SETTINGS_MODULE=the_value 而不是DJANGO_SETTINGS_MODULE=the_value
猜你喜欢
  • 2022-11-30
  • 1970-01-01
  • 2015-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
  • 2010-10-17
相关资源
最近更新 更多