Cython,删除 setup.py 中的 numpy 依赖项

Cython, remove numpy dependency in setup.py

为了使用 numpy 构建 Cython 扩展,必须在 "setup.py" 中添加 numpy.get_include():

from setuptools import setup, Extension

setup(
    ...
    include_dirs = [numpy.get_include()]
)

否则,会出现此错误:

fatal error: numpy/arrayobject.h: No such file or directory

即使直接从预编译的 .c 文件构建扩展。

显而易见的解决方案是预先安装 numpy。

但是setup.py install安装包是安装所有包依赖项(包括numpy)的常用方法。有没有办法在分发包时摆脱对 numpy 的依赖,即人们不必在 运行 setup.py install ?

之前安装 numpy

我正在考虑将 numpy .h 文件包含到发行版中,但我担心版本会与用户现有的 numpy 版本发生冲突。

也许尝试导入,如果我得到 ImportError,包含打包的 .h 文件?任何 standard/simpler 方式?

编辑: 或者有什么方法可以在 setup() 运行之前强制安装 numpy?

它可能很难看,但我这样做是为了强制 install/upgrade:

from pkg_resources import parse_version

## Install numpy if it is not found or too old
try:
    import numpy
    if parse_version(numpy.__version__) < parse_version('1.10'):
        print("numpy {} was found but is too old. Upgrading.".format(numpy.__version__))
        raise ImportError
    print("Numpy was found. Build extensions.")
except ImportError:
    print("Building Cython extensions requires numpy. Installing numpy.")
    import pip
    pip_args = ['install', numpy_req]
    pip.main(pip_args)
    import numpy