首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValueError:更新环境时没有足够的值解压(预期的2,got 1)

ValueError:更新环境时没有足够的值解压(预期的2,got 1)
EN

Stack Overflow用户
提问于 2018-08-28 07:19:53
回答 1查看 1.1K关注 0票数 1

我正在使用环境键进行更好的设置配置。最初,我得到了以下错误

代码语言:javascript
复制
django.core.exceptions.ImproperlyConfigured: Set the DATABASE_URL environment variable

因此,我在google中搜索并找到了以下解决方案

settings/base.py

代码语言:javascript
复制
import os

with open('.envs/.local/.postgres') as fh:
    os.environ.update(line.strip().split('=', 1) for line in fh)

然而,这也给了我一个错误。我得到了

代码语言:javascript
复制
ValueError: not enough values to unpack (expected 2, got 1)

.postgres和.django如下所示

.django

代码语言:javascript
复制
# General
# ------------------------------------------------------------------------------
export USE_DOCKER=yes

# Email
# DJANGO_EMAIL_BACKEND

# Redis
# ------------------------------------------------------------------------------
export REDIS_URL=redis://redis:6379/0

# Celery
# ------------------------------------------------------------------------------
# CELERY_BROKER_URL=
# CELERY_RESULT_BACKEND = 'django-cache'

# Flower
export CELERY_FLOWER_USER=debug
export CELERY_FLOWER_PASSWORD=debug

.postgres

代码语言:javascript
复制
# PostgreSQL
# ------------------------------------------------------------------------------
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DB=database
POSTGRES_USER=username
POSTGRES_PASSWORD=password
DATABASE_URL=postgres://username:password@localhost:5432/app
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-28 07:25:54

显然,并非.envs/.local/.postgres中的每一行都有一个=字符,因此split('=', 1)只为行输出元组中的一个项,而dict.update则要求迭代器输出中的每个元组有两个项。

您应该确保生成器表达式的行中有一个=字符:

代码语言:javascript
复制
os.environ.update(line.strip().split('=', 1) for line in fh if '=' in line)

编辑:既然您已经用一个附加的.django文件更新了您的问题,该文件在环境变量设置前面有一个额外的export关键字,您应该查找这个关键字,如果它存在,应该删除它:

代码语言:javascript
复制
os.environ.update((line.split(maxsplit=1)[1] if line.startswith('export ') else line).strip().split('=', 1) for line in fh if '=' in line)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52052192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档