python - 无法在我的 Django 项目中使用 Sphinx 生成自动文档
问题描述
我正在使用 sphinx 将文档添加到我的 Django 项目(github 链接,该项目是开源的)中,但是当我尝试生成 python 文件的自动文档时遇到了很多错误。我包含了一个带有文档字符串的 models.py 文件,但是在运行时make html
我遇到了不同的错误。我做了一些更改并且错误正在发生变化,但我不确定我是在修复它们还是只生成一个新错误。如果删除包含的 models.py 文件,一切运行良好。换句话说,只有当我在 .rst 文件中包含以下行时才会生成错误:
.. automodule:: account.models
:members:
让我告诉你我做了什么。
- 当我运行
make html
命令时,我的第一个错误如下:
警告:autodoc:导入模块 u'account.models' 失败;引发了以下异常:没有名为 account.models 的模块
我在 sphinxconfg.py
文件中添加了以下几行:
import os
import sys
sys.path.insert(0, os.path.abspath('../../'))
我创建了一个文件夹docs
,用于包含命令生成的所有文件sphinx-quickstart
,因此,abspath 的值为../../
.
- 好的,现在,当我运行
make html
命令时,我得到了第二个错误:
ImproperlyConfigured:请求设置 USE_I18N,但未配置设置。您必须在访问设置之前定义环境变量 DJANGO_SETTINGS_MODULE 或调用 settings.configure()。
我已经集成了国际化 Django 模块以在应用程序中启用多种语言,我不确定它如何影响文档生成,但是,为了修复这个错误,我在 sphinxconf.py
文件中添加了以下几行:
from django.conf import settings
settings.configure()
- 现在,如果我运行
make html
命令,我会收到以下消息:
“翻译基础架构无法在” AppRegistryNotReady 之前初始化:在应用注册表准备好之前,翻译基础架构无法初始化。检查您在导入时没有进行非惰性 gettext 调用。
为了“修复它”(我不确定它是否真的修复了它),我在 sphinxconf.py
文件中有以下几行:
import django
django.setup()
- 但是现在,我在运行
make html
命令时收到以下消息:
RuntimeError:模型类 django.contrib.contenttypes.models.ContentType 未声明显式 app_label 并且不在 INSTALLED_APPS 中的应用程序中。
现在我找不到修复它的选项。如果我从我的 .rst 文件中删除包含 .py 文件,那么所有文件都可以完美运行,但我需要包含在我的所有 python 文件中创建的文档字符串。
我该如何解决?
太感谢了。
重要链接:
我的项目设置:settings.py
狮身人面像文件夹:文档/
注意:我已在本地将以下行添加到conf.py文件中:
from django.conf import settings
settings.configure()
import django
django.setup()
这些更改在 github 存储库中不可见。
解决方案
你需要告诉 Django 使用哪些设置。试试这个docs/conf.py
:
import os
import sys
# I've simplified this a little to use append instead of insert.
sys.path.append(os.path.abspath('../../'))
# Specify settings module
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'app.settings')
# Setup Django
import django
django.setup()
# ... leave the rest of conf.py unchanged
这应该允许构建的其余部分正确运行。
推荐阅读
- postgresql - Corda 节点无法连接到外部数据库 - k8s
- css - dijitt.Tree:仅对顶级条目进行样式设置
- c++ - 并行访问向量
- c++ - c++ readfile 读取文件不正确,
- java - 更改树视图的字体和大小
- ajaxform - 如果使用此 ajax 脚本,任何其他形式都不起作用
- java - 使用 RestAssured 后调用的 Java 安全异常
- .htaccess - 重写特定页面的查询字符串
- c++ - Boost buffer_cast 无法从 void* 转换为 PointerToPodType
- django - 使用 Multiple Databases 在 djnago 中调用二级数据库的模型