ipyparallel导入:使用cython创建导入自己的模块

时间:2015-11-04 11:46:52

标签: python-2.7 ipython cython python-import ipython-parallel

我在ipyparallel引擎之间同步导入时遇到问题。我想并行运行随机模拟。为此我写了一个名为' gillespie'的函数。我有两个版本的函数,一个使用Python并在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 magic将numpy或scipy导入引擎工作正常。

如何让我的导入可用于所有引擎?

感谢您的帮助! baumgast

1 个答案:

答案 0 :(得分:2)

%px import gillespie在引擎上执行import语句。要实现这一点,您需要确保gillespie.so可用于这些引擎。您可以通过将其放置在site-packages或PYTHONPATH中来“安装”它,或者您可以依赖于笔记本中已经依赖的基于当前目录的加载,在这种情况下,您需要确保{ {1}}位于引擎的工作目录中。如果您使用的是单台计算机或共享文件系统,则可以使用以下命令完成此操作:

gillespie.so

或者如果文件系统未共享,则将gillespie.so发送到计算机。