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