在Django项目中使用python-decouple的问题

ss2ws0br  于 2023-10-21  发布在  Go
关注(0)|答案(1)|浏览(120)

我在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。我觉得我错过了一些非常明显的东西。但是什么

vbkedwbf

vbkedwbf1#

对于任何遇到同样问题的人来说,答案是.env文件的奇怪编码。我在powershell(echo)中创建了这个文件。> .env),它将编码设置为奇怪的东西。将编码设置为UTF-8或只是在编辑器中创建文件,应该可以修复上述问题。

相关问题