Выполнить sphinx на нерабочем скрипте Python - PullRequest
1 голос
/ 29 мая 2019

Я пытаюсь выучить Docker.

У меня есть скрипт Python, использующий библиотеку модов, которая НЕ установлена ​​в моей системе. Цель состоит в том, чтобы выполнить это в контейнере Docker. Я написал Dockerfile. Я добавил эту строку внутри:

RUN pip install --trusted-host pypi.python.org -r requirements.txt

А в файле require.txt я написал mod .

Работает, и внутри контейнера устанавливает мод, и код работает хорошо.

Теперь я хочу создать документ Sphinx по тому же сценарию. Я знаю, как работает Сфинкс (основы). Я изменил conf.py с помощью sys.path.insert(0, os.path.abspath('..')), и он указывает на каталог, который содержит Script.py (наряду с Dockerfile и needs.txt), а затем добавил следующее в index.rst: Script.py находится в папке с именем DockerPython:

.. automodule:: DockerPython.Script
   :members:

Когда я запускаю make html (что хорошо работает с другими примерами), я получаю следующее:

Running Sphinx v2.0.1
making output directory... done
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 1 source files that are out of date
updating environment: 1 added, 0 changed, 0 removed
reading sources... [100%] index
WARNING: autodoc: failed to import module 'Script' from module 'DockerPython'; the following exception was raised:
No module named 'mod'
looking for now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
writing output... [100%] index
generating indices... genindex
writing additional pages... search
copying static files... done
copying extra files... done
dumping search index in English (code: en) ... done
dumping object inventory... done
build succeeded, 1 warning.

The HTML pages are in build\html.

И страница, которую я получаю, пуста.

Итак, мой вопрос: может ли Sphinx выполняться на скрипте, который не компилируется и хорошо работает на локальном Python (потому что библиотека не установлена ​​локально)?

Как мне заставить его работать над сценарием, который работает через Docker с конкретными настройками? Спасибо.

1 Ответ

0 голосов
/ 29 мая 2019

После двух часов серфинга я разобрался.

Мне нужно было только добавить эту строку в conf.py:

autodoc_mock_imports = ['mod']
...