Django sphinx 文档不读取设置文件中的环境变量
Django sphinx documentation does not read environment variables in settings file
我想用 sphinx 记录我的 cookiecutter django 项目。问题是当 运行 make html
sphinx 让我无法读取配置文件时。它说 django.core.exceptions.ImproperlyConfigured: Set the USE_DOCKER environment variable
当不调用 django.setup()
时,它还会给我的环境抛出一个错误:django.core.exceptions.ImproperlyConfigured: Set the POSTGRES_DB environment variable
当我对它们进行硬编码时,错误继续抱怨下一个环境变量。我不能将它们全部硬编码到配置文件中,这不是一个选项。
我的环境变量配置正确。当我将它们打印出来 运行 我的本地主机时,它们就在那里。似乎 sphinx 无法以某种方式处理它们。我也在使用 docker,所以这可能会干扰,但我不知道。这是我的狮身人面像配置的一部分:
sys.path.insert(0, os.path.abspath('..'))
os.environ['DJANGO_SETTINGS_MODULE'] = 'config.settings.local'
以下是我的部分本地设置:
# ------------------------------------------------------------------------------
# https://django-extensions.readthedocs.io/en/latest/installation_instructions.html#configuration
INSTALLED_APPS += ['django_extensions'] # noqa F405
# https://docs.djangoproject.com/en/dev/ref/settings/#databases
DATABASES = {
# 'default': env.db('DATABASE_URL'), # This was the default value, but modification below seemed necessary
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': env("POSTGRES_DB"),
'USER': env("POSTGRES_USER"),
'PASSWORD': env("POSTGRES_PASSWORD"),
'HOST': env("POSTGRES_HOST"),
'PORT': env("POSTGRES_PORT"),
}
}
感谢任何形式的帮助。提前致谢!
所以事实证明,显然某些应用程序无法使用 environ 从文件中读取设置。另一个问题是 docker alpine 镜像没有预装 make
。
我通过在我的 docker 映像 (apk add make
) 中安装 make
并在使用 docker-compose -f local.yml run django make -C ./docs html
启动容器的同时构建文档来让它工作。感谢 uzi0espil 带领我到达那里。
有关详细信息,请参阅:
https://github.com/pydanny/cookiecutter-django/issues/1747
https://github.com/cookiecutter/cookiecutter/issues/1251
我有同样的问题,与 RTD 构建传递有关,但没有正确渲染整个事情。
问题
我的代码有:
os.environ['MY_ENV_VAR']
RTD 构建将通过,但不会呈现任何 autodoc 元素。由于无法识别 ['MY_ENV_VAR'] 的密钥,导入失败,引发 KeyError(key)。
可以通过在 'Builds' 下的 RTD 帐户主页查看构建日志的 RAW 输出来发现此错误。
解决方案
要解决此问题,您可以在 RTD 帐户的 Admin/Environment 变量中添加所需的环境密钥(例如“POSTGRES_DB”)。在这里你可以添加需要的键,以我的经验,你可以为值添加无意义的值。 RTD 构建现在将完全通过,因为它可以识别您在调用 os.environ[].
时传递的密钥
我想用 sphinx 记录我的 cookiecutter django 项目。问题是当 运行 make html
sphinx 让我无法读取配置文件时。它说 django.core.exceptions.ImproperlyConfigured: Set the USE_DOCKER environment variable
当不调用 django.setup()
时,它还会给我的环境抛出一个错误:django.core.exceptions.ImproperlyConfigured: Set the POSTGRES_DB environment variable
当我对它们进行硬编码时,错误继续抱怨下一个环境变量。我不能将它们全部硬编码到配置文件中,这不是一个选项。
我的环境变量配置正确。当我将它们打印出来 运行 我的本地主机时,它们就在那里。似乎 sphinx 无法以某种方式处理它们。我也在使用 docker,所以这可能会干扰,但我不知道。这是我的狮身人面像配置的一部分:
sys.path.insert(0, os.path.abspath('..'))
os.environ['DJANGO_SETTINGS_MODULE'] = 'config.settings.local'
以下是我的部分本地设置:
# ------------------------------------------------------------------------------
# https://django-extensions.readthedocs.io/en/latest/installation_instructions.html#configuration
INSTALLED_APPS += ['django_extensions'] # noqa F405
# https://docs.djangoproject.com/en/dev/ref/settings/#databases
DATABASES = {
# 'default': env.db('DATABASE_URL'), # This was the default value, but modification below seemed necessary
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': env("POSTGRES_DB"),
'USER': env("POSTGRES_USER"),
'PASSWORD': env("POSTGRES_PASSWORD"),
'HOST': env("POSTGRES_HOST"),
'PORT': env("POSTGRES_PORT"),
}
}
感谢任何形式的帮助。提前致谢!
所以事实证明,显然某些应用程序无法使用 environ 从文件中读取设置。另一个问题是 docker alpine 镜像没有预装 make
。
我通过在我的 docker 映像 (apk add make
) 中安装 make
并在使用 docker-compose -f local.yml run django make -C ./docs html
启动容器的同时构建文档来让它工作。感谢 uzi0espil 带领我到达那里。
有关详细信息,请参阅:
https://github.com/pydanny/cookiecutter-django/issues/1747 https://github.com/cookiecutter/cookiecutter/issues/1251
我有同样的问题,与 RTD 构建传递有关,但没有正确渲染整个事情。
问题
我的代码有:
os.environ['MY_ENV_VAR']
RTD 构建将通过,但不会呈现任何 autodoc 元素。由于无法识别 ['MY_ENV_VAR'] 的密钥,导入失败,引发 KeyError(key)。
可以通过在 'Builds' 下的 RTD 帐户主页查看构建日志的 RAW 输出来发现此错误。
解决方案
要解决此问题,您可以在 RTD 帐户的 Admin/Environment 变量中添加所需的环境密钥(例如“POSTGRES_DB”)。在这里你可以添加需要的键,以我的经验,你可以为值添加无意义的值。 RTD 构建现在将完全通过,因为它可以识别您在调用 os.environ[].
时传递的密钥