2012-10-15 74 views
1

我想在Linux环境下使用python和cython,所以我试图使用在cython文档中提到的primes.pyx示例。ImportError:没有模块命名素数

我在xyz目录中创建了primes.pyx目录,我使用cython primes.pyx编译了该文件。调用python解释器,然后尝试导入素数后,我遇到了以下问题。

ImportError: No module named primes 

有些身体可以帮助我。

+0

你是否在你调用解释器的同一目录下有''primes.pyd''文件? –

+0

我没有primes.pyd,我只有primes.pyx和primes.c。在编译该文件时,它提供了一个错误,指出找不到python.h – user1733051

+0

这意味着您需要安装Python源代码。大多数Linux发行版都会有一个包。 –

回答

0

这听起来好像它可能已经忘了导入,让您导入直.pyx文件没有setup.py模块的情况下。关于这方面的文档可以在here找到。

尝试增加

import pyximport; pyximport.install() 

您模块的顶部,或者试图import primes之前在解释运行它。

+0

哇你的建议工作,非常感谢jdotjdot89帮助我。 – user1733051

+0

非常感谢你们所有的人。 – user1733051

+0

很高兴我能帮到你。如果这对你有用,你应该接受这个答案,以便将来的读者知道。 – jdotjdot

2

需要编译Cython模块才能使用它们。您有两个(好的)选项:为模块创建一个setup.py,如this page所述,或使用pyximport自动编译和构建模块,只需import

如果您的模块具有其他库依赖性,或分布在多个文件中,则第一种选择最为合适。第二种选择最适合小型独立模块。

要使用pyximport,请在导入任何Cython模块之前添加import pyximport; pyximport.install()。然后,当你使用Cython模块时,Cython将根据需要自动编译该模块。

+0

我能够导入pyximport; pyximport.install()工作。我有点卡住试图导入使用setup.py。我创建了hello.pyx示例,如文档所示,在创建setup.py的同一目录中,然后执行了cython hello.pyx和python setyp.py build_ext --inplace,然后启动python并从hello运行import say_hello_to,我不确定如何执行该模块。你能帮我吗。非常感谢。 – user1733051

相关问题