【问题标题】:Why doesn't my Cython cimport for a pxd file work?为什么我的用于 pxd 文件的 Cython cimport 不起作用?
【发布时间】:2016-04-14 01:52:22
【问题描述】:

我是 Cython 的新手,所以我可能遗漏了一些明显的东西,但我已经通读了文档并且一直在努力解决这个问题。

我有一个使用setup.py 文件构建的*.pyx 文件,如下所示:

from distutils.core import setup
from Cython.Build import cythonize

setup(
    ext_modules=cythonize("path/to/helpers.pyx"),
)

效果很好,我现在可以从姐妹目录和子目录import path.to.helpers 没有任何问题。

现在,最近我决定也添加一个helpers.pxd 文件,这样我就可以将其中的cimport 部分内容添加到其他 Cython 模块中。我在path/to 中添加了一个helpers.pxd 来促进这一点,但是当我尝试cimport path.to.helpers 时,我得到了

path/to/helpers.pxd not found

错误。我是否需要更改我的setup.py 文件中的某些内容以允许cimport 来自*.pxd 文件?

我发现的所有文档都没有说明这样做,我觉得我已经尝试了所有方法,但没有任何运气。想法?

【问题讨论】:

标签: python cython distutils cimport


【解决方案1】:

在我的头撞了几个小时后终于解决了这个问题。事实证明,*.pxd 文件对 path*.pyx 文件更挑剔。我不知道为什么。无论如何,只需将路径添加到我的 *.pxd 文件即可解决问题。我的setup.py for path/to/helpers.* 保持不变,但每当我使用任何其他需要访问path.to.helpers*.pyx 文件时,我都会确保path/to/helpers 的路径包含为include-dir,例如:

cython *.pyx *.pxd -a --cplus --include-dir ../some/path

【讨论】:

    【解决方案2】:

    尝试将__init__.py 添加到您的path/to/ 目录。我相信这适用于 distutils。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-05
      • 1970-01-01
      • 2021-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-29
      • 1970-01-01
      相关资源
      最近更新 更多