在我的Django项目

时间:2018-06-15 16:00:33

标签: python django python-sphinx

我使用sphinx将addind文档添加到我的Django项目(github link,该项目是开源的),但是当我尝试生成pyod文件的autodoc时,我遇到了很多错误。我包含带有文档字符串的models.py文件,但是当运行make html时,我会遇到不同的错误。我做了一些更改,而且错误正在发生变化,但我不确定我是在修复它们还是只生成一个新错误。如果删除了models.py文件的包含,则完全运行。换句话说,只有当我在.rst文件中包含以下行时才会生成错误:

.. automodule:: account.models
    :members:

让我告诉你我做了什么。

  1. 当我运行make html命令时,我的第一个错误如下:
  2.   

    警告:autodoc:无法导入模块u' account.models&#39 ;;该   引发以下异常:       没有名为account.models的模块

    我已将以下几行添加到sphinx confg.py文件中:

    import os
    import sys
    sys.path.insert(0, os.path.abspath('../../'))
    

    我创建了一个名为docs的文件夹,其中包含sphinx-quickstart命令生成的所有文件,因此,abspath的值为../../

    1. 好的,现在,当我运行make html命令时,我收到了第二个错误:
    2.   

      NotperlyConfigured:请求设置USE_I18N,但设置不是   配置。您必须定义环境变量   DJANGO_SETTINGS_MODULE或在访问之前调用settings.configure()   设置。

      我已经集成了国际化的Django模块以在应用程序中启用多种语言,我不确定它是如何影响文档生成的,但是,为了修复这个错误,我在sphinx中添加了以下几行{ {1}}档案:

      conf.py
      1. 现在,如果我运行from django.conf import settings settings.configure() 命令,我会收到以下消息:
      2.   

        "翻译基础设施无法在"之前初始化。   AppRegistryNotReady:翻译基础设施不能   在应用程序注册表准备好之前初始化。检查你没有   在导入时进行非延迟的gettext调用。

        To"修复它" (我不确定它是否确实修复了它),我对sphinx make html文件有以下几行:

        conf.py
        1. 但是现在,当我运行import django django.setup() 命令时,我收到以下消息:
        2.   

          RuntimeError:模型类   django.contrib.contenttypes.models.ContentType没有声明   显式app_label并且不在INSTALLED_APPS中的应用程序中。

          现在我无法找到解决问题的方法。如果我从我的.rst文件中删除包含.py文件,所有文件都运行得很好,但我需要包含在我所有python文件中创建的文档字符串。

          我该如何解决?

          非常感谢你。

          重要链接:

          我的项目设置:settings.py

          Sphinx文件夹:docs/

          注意:我已将以下行添加到conf.py文件中:

          make html

          这些更改在github存储库中不可见。

1 个答案:

答案 0 :(得分:3)

您需要告诉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

这应该允许其余的构建正确运行。