我正在构建一个 python 模块,其中包含一个使用 numpy 的 cython 文件。在某些环境中
python -m build
按原样工作;在其他环境中我需要提前设置C_INCLUDE_PATH=`python -c "import numpy; print(numpy.get_include())"`
。
但是当我输入
cibuildwheel
时,我总是得到 fatal error: numpy/arrayobject.h: No such file or directory
。我不知道如何帮助它找到这些文件。
我在
pyproject.toml
中使用了这个:
[tools.setuptools]
ext-modules = [
{name = "haggregate.regularize", sources = ["src/haggregate/regularize.pyx"]}
]
问题在于
include_dirs
在那里不被接受,即使被接受,它也不能是动态的。此外,setuptools
警告说tools.setuptools.ext-modules
是实验性的。因此,我从 pyproject.toml
中删除了该部分并添加了这个 setup.py
,它可以正常工作。
import numpy
from Cython.Build import cythonize
from setuptools import Extension, setup
setup(
ext_modules=cythonize(
Extension(
"haggregate.regularize",
sources=["src/haggregate/regularize.pyx"],
include_dirs=[numpy.get_include()],
)
),
)
换句话说,我太努力地避免使用已弃用的
setup.py
,但似乎它还没有完全弃用,在 pyproject.toml
和 setuptools
进一步成熟之前,可以最低限度地使用它。