لا يمكن إنشاء أوتوكوك باستخدام Sphinx في مشروع Django الخاص بي

3

أنا أضيف وثائق إلى مشروع Django الخاص بي ( رابط github ، المشروع مفتوح المصدر) باستخدام أبو الهول ، لكني أتلقى الكثير من الأخطاء عند محاولة إنشاء autodoc لملفات python. أقوم بتضمين ملف models.py مع docstrings ولكن ، عند الجري make html إنني أتلقى أخطاء مختلفة. لقد أجريت بعض التغييرات والخلل يتغير ، لكنني لست متأكدًا مما إذا كنت أقوم بإصلاحها أو إنشاء خطأ جديد فقط. إذا أزلت تضمين ملف models.py ، فستعمل جميعها بشكل مثالي. بمعنى آخر ، يتم إنشاء الخطأ فقط عندما أقوم بتضمين الأسطر التالية في ملف .rst:

.. automodule:: account.models
    :members:

دعني أريك ما فعلت.

  1. أول خطأ لي كان التالي ، عندما قمت بتشغيل make html أمر:

WARNING: autodoc: failed to import module u'account.models'; the following exception was raised: No module named account.models

لقد أضفت الأسطر التالية إلى أبو الهول confg.py ملف:

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

لقد قمت بإنشاء مجلد يسمى docs لتضمين جميع الملفات التي تم إنشاؤها بواسطة sphinx-quickstart الأمر ، لهذا السبب ، فإن قيمة abspath هي ../../ .

  1. حسنا ، الآن ، عندما أركض make html الأمر ، حصلت على الخطأ الثاني:

ImproperlyConfigured: Requested setting USE_I18N, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

لقد دمجت وحدة Django الداخلية لتمكين اللغات المتعددة في التطبيق ، لست متأكدًا من كيفية تأثيرها على إنشاء المستندات ، ولكن لإصلاح هذا الخطأ ، أضفت الأسطر التالية إلى أبو الهول conf.py ملف:

from django.conf import settings
settings.configure()
  1. الآن ، إذا قمت بتشغيل make html أمر ، لدي الرسالة التالية:

"The translation infrastructure cannot be initialized before the " AppRegistryNotReady: The translation infrastructure cannot be initialized before the apps registry is ready. Check that you don't make non-lazy gettext calls at import time.

"لإصلاحه" (لست متأكدًا مما إذا كان قد أصلحه بالفعل) ، أمتلك الأسطر التالية لأبو الهول conf.py ملف:

import django
django.setup()
  1. ولكن الآن ، أتلقى الرسالة التالية عند تشغيل make html أمر:

RuntimeError: Model class django.contrib.contenttypes.models.ContentType doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

والآن لا يمكنني العثور على خيار لإصلاحه. إذا قمت بإزالة تضمين ملفات .py من ملفات .rst ، فستعمل جميعها بشكل مثالي ، لكنني بحاجة إلى تضمين المستندات التي تم إنشاؤها في جميع ملفات python الخاصة بي.

كيف يمكنني إصلاح ذلك؟

شكرا جزيلا.

روابط مهمة:

إعدادات مشروعي: settings.py

مجلد أبو الهول: docs /

ملاحظة: أضفت محليا الأسطر التالية إلى ملفات conf.py :

from django.conf import settings
settings.configure()

import django
django.setup()

هذه التغييرات ليست مرئية في مستودع جيثب.

1 إجابة

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

من المفترض أن يسمح هذا لبقية الإصدار بالعمل بشكل صحيح.

:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام