代码之家  ›  专栏  ›  技术社区  ›  milan

ValueError:更新环境时没有足够的值来解包(应为2,得到1)

  •  1
  • milan  · 技术社区  · 8 年前

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

    django.core.exceptions.ImproperlyConfigured: Set the DATABASE_URL environment variable
    

    设置/基.py

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

    不过,这也给了我一个错误。我明白了

    ValueError: not enough values to unpack (expected 2, got 1)
    

    .django公司

    # 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
    

    .博士后

    # PostgreSQL
    # ------------------------------------------------------------------------------
    POSTGRES_HOST=postgres
    POSTGRES_PORT=5432
    POSTGRES_DB=database
    POSTGRES_USER=username
    POSTGRES_PASSWORD=password
    DATABASE_URL=postgres://username:password@localhost:5432/app
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   blhsing    8 年前

    显然不是每一行 .envs/.local/.postgres 有一个 = 性格,所以 split('=', 1) dict.update 迭代器输出中的每个元组需要两个项。

    你应该确保 生成器表达式行中的字符:

    os.environ.update(line.strip().split('=', 1) for line in fh if '=' in line)
    

    .django 具有额外关键字的文件 export

    os.environ.update((line.split(maxsplit=1)[1] if line.startswith('export ') else line).strip().split('=', 1) for line in fh if '=' in line)