Sphinx не может импортировать зависимости модуля

Инструмент Python, который пишет awscli-bastion, имеет следующую структуру каталогов, созданную cookiecutter.

.
├── awscli_bastion
│   ├── __init__.py
│   ├── cache.py
│   ├── cli.py
│   ├── credentials.py
│   ├── minimal.py
│   └── sts.py
├── docs
│   ├── Makefile
│   ├── _build
│   ├── ...
│   ├── conf.py
│   ├── ...
├── setup.py
├── .readthedocs.yml
│   ...

где setup.py содержит следующее:

requirements = [ 'Click>=6.0', 'boto3>=1.5.0', 'awscli>=1.13.0', 'humanize>=0.5.1' ]

где conf.py содержит следующее:

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

import awscli_bastion

и .readthedocs.yml содержит:

# .readthedocs.yml
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details

# Required
version: 2

# Build documentation in the docs/ directory with Sphinx
sphinx:
  configuration: docs/conf.py

# Build documentation with MkDocs
#mkdocs:
#  configuration: mkdocs.yml

# Optionally build your docs in additional formats such as PDF and ePub
formats: all

# Optionally set the version of Python and requirements required to build your docs
python:
  version: 3.7

Когда sphinx собирается локально, все функции модуля автоматически документируются.

введите здесь описание изображения

Когда я строю на readthedoc.io, он может успешно импортировать все модули пакета awscli_bastion, но не может автоматически документировать функции модуля из-за сбоя при импорте.

WARNING: autodoc: failed to import module 'cache' from module 'awscli_bastion'; the following exception was raised:
No module named 'dateutil'
WARNING: autodoc: failed to import module 'cli' from module 'awscli_bastion'; the following exception was raised:
No module named 'botocore'
WARNING: autodoc: failed to import module 'credentials' from module 'awscli_bastion'; the following exception was raised:
No module named 'botocore'
WARNING: autodoc: failed to import module 'minimal' from module 'awscli_bastion'; the following exception was raised:
No module named 'boto3'
WARNING: autodoc: failed to import module 'sts' from module 'awscli_bastion'; the following exception was raised:
No module named 'botocore'

https://readthedocs.org/api/v2/build/9667746.txt

это то, что отображается на https://awscli-bastion.readthedocs.io/en/latest/awscli_bastion.html

введите здесь описание изображения

Почему виртуальная среда readthedoc.io не устанавливает зависимости, определенные в setup.py?


person Aidan Melen    schedule 17.09.2019    source источник


Ответы (1)


окей, я хочу установить зависимости, создав docs/ файл requirements.txt, содержащий следующее:

Click>=6.0
boto3>=1.5.0
awscli>=1.13.0
humanize>=0.5.1
docutils>=0.15.2

а затем ссылаясь на это в .readthedocs.yml

python:
  version: 3.7
  install:
    - requirements: docs/requirements.txt

Было бы более идеально ссылаться на setup.py для требований, таким образом мне не нужно определять их дважды.

person Aidan Melen    schedule 17.09.2019
comment
Ты сможешь. Поместите -e .[docs] в свой requirements.txt, если вы добавили docs_extra. Это то, что мы делаем для Pyramid. - person Steve Piercy; 17.09.2019