Ответ 1
Расширения C не могут быть перезагружены без перезапуска процесса (см. эту официальную ошибку Python для получения дополнительной информации).
Поскольку вы уже используете IPython, я бы рекомендовал использовать один из двухпроцессорных интерфейсов, таких как Notebook или QtConsole, если он вам подходит. Это позволяет вам легко перезапустить процесс ядра, что позволяет загружать модуль заново. Очевидно, что это не так удобно, как перезагрузка модуля Python, потому что вам нужно выполнить повторное выполнение, чтобы вернуться в одно и то же состояние. Но этого нельзя избежать, поэтому нужно уменьшить неудобства.
Я нашел интерфейс ноутбука наиболее удобным для разработки расширений, поскольку он обеспечивает самый простой способ вернуться в одно и то же состояние:
- восстановить расширение
- перезапустить ядро
- Запустить все, чтобы перезапустить ноутбук
и вы вернетесь в одно и то же состояние с новой версией расширения. Пробег может варьироваться в зависимости от того, насколько дорогостоящей будет ваша интерактивная работа, но она мне хорошо послужила.