Я пишу пакет Python, который делает вычисления на GPU, используя библиотеку PyCUDA. PyCUDA необходимо инициализировать устройство GPU (обычно путем импорта pycuda.autoinit
), прежде чем любой из его подмодулей можно импортировать.Как сделать мой пакет доступным без инициализации GPU
В моих собственных модулях я импортирую любые подмодули и функции, которые мне нужны из PyCUDA, а это значит, что мои собственные модули не являются импортируемыми без предварительной инициализации PyCUDA. Это нормально, потому что мой пакет ничего не полезен без присутствия GPU. Однако теперь я хочу написать документацию, и Sphinx Autodoc необходимо импортировать мой пакет, чтобы прочитать docstrings. Он отлично работает, если я положил import pycuda.autoinit
в docs/conf.py
, но хотел бы, чтобы документация была построена на машинах, на которых нет графических процессоров NVIDIA, таких как мой собственный ноутбук или readthedocs.org.
Что является самым элегантным способом отложить импорт моих зависимостей, чтобы я мог импортировать свои собственные подмодули на машинах, на которых не установлены все зависимости?
Какой механизм вы используете для обработки ваших строк документации? '.. automodule :: mymodule' с': members: 'под ним? – abarnert
Да, например. В принципе, я ищу лучший способ сделать все мои собственные модули/классы/функции импортируемыми, откладывая импорт всех модулей, относящихся к GPU, до времени исполнения. – oceanhug
Скучно, может быть? http://stackoverflow.com/a/15912502/407651, http://stackoverflow.com/a/17369696/407651. – mzjn