Как заставить BuildDoc работать только когда python-sphinx установлен из файла setup.py?

У меня есть setup.py файл для моего проекта FlashText:

from setuptools import setup, Command
from sphinx.setup_command import BuildDoc

setup(
    .
    .
    cmdclass={'test': PyTest, 'build_sphinx': BuildDoc},
)

pip install flashtext терпит неудачу, если python-sphinx не установлен.

ImportError: нет модуля с именем sphinx.setup_command


Сбой команды "python setup.py egg_info" с кодом ошибки 1 в /tmp/pip-build-LI0I_O/flashtext/

Это исправит эту проблему:

sudo apt-get install python-sphinx

Что мне нужно, если у кого-то нет python-sphinx затем они также должны иметь возможность установить библиотеку. Как мне справиться с этим?

например py.test обрабатывается так:

import subprocess


class PyTest(Command):
    user_options = []

    def initialize_options(self):
        pass

    def finalize_options(self):
        pass

    def run(self):
        errno = subprocess.call(['py.test'])
        raise SystemExit(errno)

PS: Полный код доступен на github https://github.com/vi3k6i5/flashtext

1 ответ

Решение
cmdclass={'test': PyTest}

try:
    from sphinx.setup_command import BuildDoc
    cmdclass['build_sphinx'] = BuildDoc
except ImportError:
    print('WARNING: sphinx not available, not building docs')

setup(
    .
    .
    cmdclass=cmdclass
)
Другие вопросы по тегам