为什么Python无法读取我的环境变量?
我正在使用Django,想设置几个环境变量来定义要导入哪些设置。
我的文件夹结构是这样的:
project_folder>
app_folder>
project_specific_files>
settings>
base.py
local.py
我使用Kenneth Reitz的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命令行,尝试打印环境变量,我得到以下内容:
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
1 个回答
11
你的环境变量有没有被导出呢?
可能这个环境变量在当前的命令行窗口里是定义了,但没有设置成可以传递给子进程(比如 Python 解释器或者 Django)。
如果你在使用 bash,可以运行:export DJANGO_SETTINGS_MODULE