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
为了使用 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 .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