python readthedocs, как удовлетворить требование sip (или pyqt)

Я хочу опубликовать документацию моего проекта https://bitbucket.org/oaltun/opn в readthedocs. орг.

Сборка не удалась. В журнале отображаются различные ошибки https://readthedocs.org/builds/opn/2247789/, но первый - «нет модуля с именем sip».

sip нужен pyqt, который нужен проекту.

Обычно в такой ситуации, насколько я понимаю, вы добавляете недостающий пакет в свой setup.py и проверяете параметр readthedocs.org, чтобы создать файл virtualenv. Я устанавливаю флажок, чтобы создать файл virtualenv. Но я не могу добавить sip или pyqt в setup.py.

Проблема в том, что pyqt & sip не использует инструменты настройки, поэтому не может быть установлен с помощью pip. Таким образом, вы не можете добавить их в setup.py (это не удается даже на моем локальном компьютере).

В своей локальной среде я устанавливаю pyqt с помощью (ana) conda. Но я думаю, что readthedocs.org использует pip для вызова зависимостей.

Итак, как я могу включить sip в virtualenv?


person Zargo    schedule 27.01.2015    source источник
comment
Немного погуглил, но прочитал это. Вас также может заинтересовать этот лицензионный код LGPL, который я нашел (отказ от ответственности: я не связан с проектом): github.com/pyudev/pyudev/blob/develop/doc/conf.py#L37   -  person three_pineapples    schedule 29.01.2015
comment
@three_pineapples: спасибо за это.   -  person Zargo    schedule 01.02.2015
comment
Вы также можете указать readthedocs на альтернативный файл requirements.txt в его настройках.   -  person Trilarion    schedule 22.03.2017


Ответы (1)


Уловка состоит в том, чтобы имитировать эти интерфейсы:

import mock 
MOCK_MODULES = ['sip', 'PyQt4', 'PyQt4.QtGui']
sys.modules.update((mod_name, mock.MagicMock()) for mod_name in MOCK_MODULES)

Обратите внимание, что вы также должны имитировать корневой пакет PyQt4, иначе получите ошибку ImportError.

person hoju    schedule 21.05.2016
comment
или просто используйте autodoc_mock_imports - person ederag; 07.05.2018