2015-11-04 4 views
1

У меня проблема синхронизации импорта между ipyparallel engine. Я хочу запустить стохастическое моделирование параллельно. Для этого я написал функцию «gillespie». У меня есть две версии функции, одна из которых использует Python и для получения некоторой скорости в Cython. Оба работают.ipyparallel import: импортировать собственный модуль, созданный с помощью cython

Проблема заключается в том, как сделать скомпилированную функцию cython доступной для всех движков. Файлы gillespie.c ',' gillespie.so 'и' gillespie.pyx 'находятся в текущем каталоге вместе с записной книжкой, откуда я хочу использовать функции. Я хотел, чтобы импортировать его как этот

import gillespie as gc 
%px import gillespie as gc 

Но это дает мне:

Traceback (most recent call last)<ipython-input-50-801274ebf64a> in <module>() 
----> 1 import gillespie as gc 
ImportError: No module named gillespie 

Просто делать

import gillespie as gc 

работает просто отлично, и я могу использовать скомпилированные функции.

Использование магии% px для импорта numpy или scipy для двигателей работает отлично.

Как я могу сделать свой импорт доступным для всех двигателей?

Спасибо за помощь! baumgast

ответ

2

%px import gillespie выполняет заявление об импорте на двигатели. Для этого вам необходимо убедиться, что для этих двигателей доступно gillespie.so. Вы можете «установить» его, поместив его в пакеты сайта или PYTHONPATH, или вы можете полагаться на загрузку текущей директории, на которую вы уже полагаетесь в ноутбуке, и в этом случае вам нужно убедиться, что gillespie.so находится в рабочем каталоге двигателей. Если вы находитесь на одной машине или общей файловой системы, вы можете сделать это с:

%px cd /path/to/dir/containing/gillespie.so 

или отправить gillespie.so к машинам, если файловая система не является общим.