控制盘取决于构建时numpy版本

控制盘取决于构建时numpy版本,numpy,pip,python-wheel,python-manylinux,Numpy,Pip,Python Wheel,Python Manylinux,我正在尝试构建一个python扩展,它使用numpy C-API来操作numpy数组。在设置部署链时,我遇到了一个问题 在我的requirements.txt和setup.py中,我添加了依赖项numpy>=1.7,因为我使用的是该版本中引入的API功能。我正在quay.io/pypa/manylinux1_x86_64docker图像中构建轮子。在图中,我正在使用pip安装我的需求。这将安装numpy==1.14,因为这是与我的依赖项匹配的当前版本 但是,当我在我的ubuntu机器上安装myp

我正在尝试构建一个python扩展,它使用numpy C-API来操作numpy数组。在设置部署链时,我遇到了一个问题

在我的
requirements.txt
setup.py
中,我添加了依赖项
numpy>=1.7
,因为我使用的是该版本中引入的API功能。我正在
quay.io/pypa/manylinux1_x86_64
docker图像中构建轮子。在图中,我正在使用
pip
安装我的需求。这将安装
numpy==1.14
,因为这是与我的依赖项匹配的当前版本

但是,当我在我的ubuntu机器上安装
mypackage-xxx-manylinux\u x84\u 64.whl
时(它有numpy
1.8
),我在导入包时收到以下错误

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
RuntimeError: module compiled against API version 0xc but this version of numpy is 0x9
---------------------------------------------------------------------------
ImportError
[...]    
ImportError: numpy.core.multiarray failed to import

明显的修复方法是运行
pip安装-U numpy
。但是,我不想告诉我的包的每个用户,如果他们的numpy库是
的话,就手动运行这个命令。我已经通过添加一个最小的“pyproject.toml”和一个完全固定的numpy版本,满意地解决了这个问题。这使得pip安装在符合PEP 517的构建隔离模式下,其中仅安装此文件中列出的依赖项

[build-system]
requires = ['numpy==1.12.2', 'setuptools>=40.8.0', 'wheel', 'packaging']
build-backend = "setuptools.build_meta"

My
install\u需要在My
设置中使用
。py仍然列出
numpy>=1.12.2
,因此,当生产的车轮安装完毕后,pip不会(尝试)强制将numpy降级到
1.12.2
,例如
1.16.2
已经安装。

如今,与PEP 517的构建隔离已经生效,这也成为源代码安装的问题。这种方法在我的系统上似乎不起作用。你能退房吗?
[build-system]
requires = ['numpy==1.12.2', 'setuptools>=40.8.0', 'wheel', 'packaging']
build-backend = "setuptools.build_meta"