`python -m build` 在 cibuildwheel 中运行时找不到 numpy 包含文件

问题描述 投票:0回答:1

我正在构建一个 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
。我不知道如何帮助它找到这些文件。

python numpy pip cython setuptools
1个回答
0
投票

我在

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
进一步成熟之前,可以最低限度地使用它。

© www.soinside.com 2019 - 2024. All rights reserved.