ImportError: 没有名为 primes 的模块。

4

我正在尝试在Linux环境下使用Python和Cython,因此我尝试使用Cython文档中提到的primes.pyx示例。

我已经在xyz目录下创建了primes.pyx并使用cython编译了该文件。在调用Python解释器并尝试导入primes时,我遇到了以下问题:

ImportError: No module named primes

有人能帮助我吗?

这段内容与IT技术无关。

你在调用解释器的同一目录下是否有一个名为“primes.pyd”的文件? - Gareth Latty
我没有primes.pyd文件,我只有primes.pyx和primes.c。在编译该文件时,它会出现错误,提示找不到python.h文件。 - user1733051
这意味着您需要安装Python源代码。大多数Linux发行版都会有相关的软件包。 - Gareth Latty
我已经安装了Python-2.7.3,我可以在以下位置看到python.h文件: /usr/bin/Python-2.7.3/Include/Python.h /usr/local/include/python2.7/Python.h - user1733051
继续阅读文档:http://docs.cython.org/src/quickstart/build.html - Warren Weckesser
2个回答

4
Cython模块需要先编译才能使用。你有两种好的选择:要么为该模块制作一个setup.py文件(在此页面有介绍),要么使用pyximport自动编译并构建您的模块,只需导入即可。
如果您有一个具有其他库依赖项或跨多个文件的模块,则最好选择第一种选项。如果是小型的自包含模块,则第二种选项更合适。
要使用pyximport,请在导入任何Cython模块之前添加import pyximport; pyximport.install()。然后,当您import一个Cython模块时,如果需要,Cython将自动编译该模块。

我已经成功地导入了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

0

这对我来说听起来像是忘记导入模块,让您可以直接导入没有 setup.py.pyx 文件。有关此内容的文档可以在 这里 找到。

尝试添加

import pyximport; pyximport.install()

将代码放置在模块的顶部,或在尝试“import primes”之前在解释器中运行它。

哇,你的建议起作用了,非常感谢 jdotjdot89 的帮助。 - user1733051
非常感谢大家抽出时间。 - user1733051
很高兴能帮到你。如果这对你有用,请接受这个答案,这样未来的读者就会知道。 - jdotjdot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接