我在Django项目中遇到了一个让python-decouple工作的问题。
我的.env文件位于settings.py中的BASE_BLOG解析为:
SECRET_KEY=ARANDOMSECRETKEY
我的settings.py:
from pathlib import Path
import locale
from decouple import config
# config.encoding = locale.getpreferredencoding(False)
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = config('SECRET_KEY')
如果我开始我的django项目时将config.encoding一行注解掉,它会出现以下错误:
File "<frozen codecs>", line 322, in decode
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
如果我从这行开始我的项目,不同的错误:
Lib\site-packages\decouple.py", line 92, in get
raise UndefinedValueError('{} not found. Declare it as envvar or define a default value.'.format(option))
decouple.UndefinedValueError: SECRET_KEY not found. Declare it as envvar or define a default value.
我已经在几乎所有可用的路径中添加了.env文件,没有运气:(我还尝试使用settings.ini文件:
[settings]
SECRET_KEY=ARANDOMSECRETKEY
这错误如下:
configparser.MissingSectionHeaderError: File contains no section headers.
file: 'xxxx\\settings.ini', line: 1
'ÿþ[\x00s\x00e\x00t\x00t\x00i\x00n\x00g\x00s\x00]\x00\n'
而如果我将settings.ini文件重命名为settings.old,则错误更改为未找到SECRET_KEY。换句话说,python-decouple可以找到.env和settings.ini文件,但由于某种原因无法读取它们。请帮帮忙:-)
我也试过只安装django + python-decouple -> same issues来创建一个新的venv。我觉得我错过了一些非常明显的东西。但是什么
1条答案
按热度按时间vbkedwbf1#
对于任何遇到同样问题的人来说,答案是.env文件的奇怪编码。我在powershell(echo)中创建了这个文件。> .env),它将编码设置为奇怪的东西。将编码设置为UTF-8或只是在编辑器中创建文件,应该可以修复上述问题。