es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Sphinx no puede encontrar mis funciones (probablemente debido a los importes o la estructura de carpetas).

Tengo la siguiente estructura de carpetas para un proyecto de paquete (simplificado):

projectname
├── docs
├── packagename
│ ├── somemodule
│ │ ├── init.py (segundo)
│ │ └── somescript.py
│ └── init.py (primero)
├── setup.cfg
└── pyproject.toml

En el primer archivo init.py hago “from . import somemodule”. En el segundo archivo init.py hago “from .somescript import *”. Y somescript.py contiene una función llamada my_sum. El problema es que Sphinx no reconoce la función. Solo reconoce el módulo packagename.somemodule: no hay ninguna descripción de doscstrings para my_sum en la documentación generada. La función funciona bien si instalo la biblioteca usando “pip install .” desde la carpeta projectname.
Estoy seguro de que el problema está en la estructura de carpetas o las importaciones, porque no había ningún problema cuando somescript.py se encontraba directamente en la carpeta packagename.

Información adicional (tal vez útil, tal vez no):
Uso Read The Docs.
Parte de .readthedocs.yaml:

python:
install:
– method: pip
path: .

ACTUALIZACIÓN:
Read The Docs genera las siguientes advertencias:

WARNING: autodoc: no se pudo importar el módulo ‘somescript’ del módulo ‘packagename’; se generó la siguiente excepción:
No module named ‘packagename.somescripts’
WARNING: la entrada html_static_path ‘_static’ no existe

ACTUALIZACIÓN 2:
Corregí la advertencia de autodoc al corregir docs/source/packagename.rst, pero todavía tengo el problema.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que Sphinx no puede encontrar la función my_sum en somescript.py. Esto podría ser porque la función no se está importando correctamente o porque la función autodoc no está configurada correctamente.

    Para resolver este problema, puedes intentar los siguientes pasos:

    1. Confirma que el archivo somescript.py se está importando correctamente en el segundo archivo __init__.py utilizando from .somescript import *.
    2. Asegúrate de que el archivo somescript.py tenga una docstring adecuada para la función my_sum.
    3. Asegúrate de que la extensión autodoc esté configurada correctamente en Sphinx. En el archivo conf.py dentro del directorio de documentación, asegúrate de que la lista extensions incluya 'sphinx.ext.autodoc'.
    4. En el mismo archivo conf.py, añade 'packagename.somescript' a la lista de módulos que deben ser autodoc.

    Si estos pasos no resuelven el problema, es posible que necesites proporcionar más información sobre la configuración de Sphinx y los mensajes de advertencia generados por Read The Docs.

Comments are closed.