Версия пакета очень важна.
Я нашел стабильную комбинацию, которая работает на моей 64-битной машине с Windows10:
pip install numpy-1.12.0+mkl-cp36-cp36m-win64.whl
pip install scipy-0.18.1-cp36-cp36m-win64.whl
pip install matplotlib-2.0.0-cp36-cp36m-win64.whl
Источник .
Я могу ошибаться, но я не думаю, что MEF занимается каким-либо посредничеством в событиях. Это общий механизм композиции, похожий на контейнеры ioc, но предназначенный для более общего решения расширяемости подключаемых модулей и приложений. CAB и Prism, с другой стороны, являются фреймворками пользовательского интерфейса, которые позволяют создавать составные приложения, состоящие из компонентов пользовательского интерфейса. Поскольку компоненты пользовательского интерфейса, скорее всего, должны будут взаимодействовать друг с другом и реагировать на действия в других компонентах пользовательского интерфейса, базовая структура должна предоставлять механизм для событий (публикация / подписка) между компонентами пользовательского интерфейса.
Если вы используете MEF с WPF и шаблоном MVVM, то ваши части обычно экспортируют классы ViewModel и классы View (например, DataTemplates и т. Д.). Ваш View привязывается к ViewModel и использует свойства и команды зависимостей для обмена данными между собой. Следовательно, если части A необходимо взаимодействовать с частью B, тогда часть A может импортировать ссылку на ViewModel части B, и они могут выполнять вызовы методов туда и обратно. Часть A может также регистрировать обработчики событий для событий Части B и т. Д.
MEF не включает механизм обработки событий, однако вы можете использовать агрегатор событий Prism с MEF. Я написал об этом здесь.
По сути, вы экспортируете Prism ' Гленн
Я согласен со Скоттом. «Общая» модель pub / sub кажется интересной, но мне редко она нужна. Если мне нужно разделенное сообщение, с помощью MEF я просто определяю контракт IMessage, а затем экспортирую реализацию, а затем импортирую туда, где мне это нужно. Если это строго типизированное сообщение, я импортирую именно ту часть, с которой мне нужно поговорить, и напрямую отправлю ее.