控制盘取决于构建时numpy版本
我正在尝试构建一个python扩展,它使用numpy C-API来操作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
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
时(它有numpy1.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"
Myinstall\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"