Numpy 版本不匹配
Numpy version mismatch
所以我有一个很常见的问题。但是我没有找到我在SO上或自己寻找的答案。
我正在使用 numpy headers.
编译带有 C++ 扩展的包
创建测试环境的过程是从以下conda env 文件创建一个环境。
name: debug
channels:
- defaults
dependencies:
- _libgcc_mutex=0.1=main
- ca-certificates=2021.10.26=h06a4308_2
- certifi=2021.10.8=py39h06a4308_0
- intel-openmp=2021.4.0=h06a4308_3561
- joblib=1.1.0=pyhd3eb1b0_0
- ld_impl_linux-64=2.35.1=h7274673_9
- libffi=3.3=he6710b0_2
- libgcc-ng=9.3.0=h5101ec6_17
- libgfortran-ng=7.5.0=ha8ba4b0_17
- libgfortran4=7.5.0=ha8ba4b0_17
- libopenblas=0.3.13=h4367d64_0
- libstdcxx-ng=9.3.0=hd4cf53a_17
- ncurses=6.3=h7f8727e_2
- openssl=1.1.1l=h7f8727e_0
- pip=21.2.4=py39h06a4308_0
- python=3.9.7=h12debd9_1
- readline=8.1=h27cfd23_0
- setuptools=58.0.4=py39h06a4308_0
- six=1.16.0=pyhd3eb1b0_0
- sqlite=3.36.0=hc218d9a_0
- threadpoolctl=2.2.0=pyh0d69192_0
- tk=8.6.11=h1ccaba5_0
- tzdata=2021e=hda174b7_0
- wheel=0.37.0=pyhd3eb1b0_1
- xz=5.2.5=h7b6447c_0
- zlib=1.2.11=h7b6447c_3
之后我用
安装numpy
pip install numpy==1.21.3
(我也试过从 conda 安装它。)
然后我用
安装我的项目
pip install . or python -m pip install .
在我的测试环境中,当我 运行 我的测试出现以下错误。
RuntimeError: module compiled against API version 0xf but this version of numpy is 0xe
所以首先,错误很明显,所以如果我升级到 numpy 1.22.0,它就可以工作了。
但我想了解的是为什么它说它是针对 0xf 编译的。我也尝试在没有构建隔离的情况下进行构建,结果是一样的。我检查了我的 PATH 和 PYTHONPATH ,似乎没有冲突路径。当我在 setup.py 中导入 numpy 时,它说 numpy 的版本是 1.21.3
这是我的 pyproject.toml 文件的标题。
[build-system]
requires = [
"setuptools",
"wheel",
"numpy==1.21.3"
]
build-backend = "setuptools.build_meta"
这是我 setup.py 中有趣的部分:
setup(name='xxx',
version='xxx',
author="xxx",
author_email="xxx",
license='xxx',
url="xxx",
description='xxx',
install_requires=['scipy', 'numpy>=1.21.3', 'scikit-learn'],
ext_modules=[xxx],
packages=find_packages(),
cmdclass={'sdist': sdistzip},
py_modules=['xxx'])
你能告诉我为什么会出现这样的错误吗?为什么它是针对 0xf 编译的?
我不知道为什么,但更改 py_modules 名称解决了我的问题。
所以我有一个很常见的问题。但是我没有找到我在SO上或自己寻找的答案。
我正在使用 numpy headers.
编译带有 C++ 扩展的包创建测试环境的过程是从以下conda env 文件创建一个环境。
name: debug
channels:
- defaults
dependencies:
- _libgcc_mutex=0.1=main
- ca-certificates=2021.10.26=h06a4308_2
- certifi=2021.10.8=py39h06a4308_0
- intel-openmp=2021.4.0=h06a4308_3561
- joblib=1.1.0=pyhd3eb1b0_0
- ld_impl_linux-64=2.35.1=h7274673_9
- libffi=3.3=he6710b0_2
- libgcc-ng=9.3.0=h5101ec6_17
- libgfortran-ng=7.5.0=ha8ba4b0_17
- libgfortran4=7.5.0=ha8ba4b0_17
- libopenblas=0.3.13=h4367d64_0
- libstdcxx-ng=9.3.0=hd4cf53a_17
- ncurses=6.3=h7f8727e_2
- openssl=1.1.1l=h7f8727e_0
- pip=21.2.4=py39h06a4308_0
- python=3.9.7=h12debd9_1
- readline=8.1=h27cfd23_0
- setuptools=58.0.4=py39h06a4308_0
- six=1.16.0=pyhd3eb1b0_0
- sqlite=3.36.0=hc218d9a_0
- threadpoolctl=2.2.0=pyh0d69192_0
- tk=8.6.11=h1ccaba5_0
- tzdata=2021e=hda174b7_0
- wheel=0.37.0=pyhd3eb1b0_1
- xz=5.2.5=h7b6447c_0
- zlib=1.2.11=h7b6447c_3
之后我用
安装numpypip install numpy==1.21.3
(我也试过从 conda 安装它。)
然后我用
安装我的项目pip install . or python -m pip install .
在我的测试环境中,当我 运行 我的测试出现以下错误。
RuntimeError: module compiled against API version 0xf but this version of numpy is 0xe
所以首先,错误很明显,所以如果我升级到 numpy 1.22.0,它就可以工作了。
但我想了解的是为什么它说它是针对 0xf 编译的。我也尝试在没有构建隔离的情况下进行构建,结果是一样的。我检查了我的 PATH 和 PYTHONPATH ,似乎没有冲突路径。当我在 setup.py 中导入 numpy 时,它说 numpy 的版本是 1.21.3
这是我的 pyproject.toml 文件的标题。
[build-system]
requires = [
"setuptools",
"wheel",
"numpy==1.21.3"
]
build-backend = "setuptools.build_meta"
这是我 setup.py 中有趣的部分:
setup(name='xxx',
version='xxx',
author="xxx",
author_email="xxx",
license='xxx',
url="xxx",
description='xxx',
install_requires=['scipy', 'numpy>=1.21.3', 'scikit-learn'],
ext_modules=[xxx],
packages=find_packages(),
cmdclass={'sdist': sdistzip},
py_modules=['xxx'])
你能告诉我为什么会出现这样的错误吗?为什么它是针对 0xf 编译的?
我不知道为什么,但更改 py_modules 名称解决了我的问题。