CMake 错误:找不到 Python(缺少:Python_NumPy_INCLUDE_DIRS NumPy)(找到版本“2.7.17”)

问题描述 投票:0回答:2

我在构建过程中遇到此错误

CMake Error at /opt/cmake-3.21.1-linux-x86_64/share/cmake-3.21/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find Python (missing: Python_NumPy_INCLUDE_DIRS NumPy) (found
  version "2.7.17")
Call Stack (most recent call first):
  /opt/cmake-3.21.1-linux-x86_64/share/cmake-3.21/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
  /opt/cmake-3.21.1-linux-x86_64/share/cmake-3.21/Modules/FindPython.cmake:556 (find_package_handle_standard_args)
  faiss/python/CMakeLists.txt:116 (find_package)

我已经安装了

sudo apt-get install python-dev
并且还尝试添加

-DPYTHON_INCLUDE_DIR=$(python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())")  \
-DPYTHON_LIBRARY=$(python -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR'))")

仍然出现同样的错误。我的python是

/home/dfw/anaconda3/bin/python
,版本是3.7.11。我的cmake版本是3.21.1。我该如何解决这个问题?

python cmake python-3.7
2个回答
5
投票

Cmake apt

文件夹中找到
/usr
安装的python。 有两种方法可以告诉 Cmake python 的特殊位置:

在命令行上定义

PYTHON_INCLUDE_DIR
PYTHON_LIBRARY
变量不起作用,因为当您调用
find_package(python3)
时,这些变量会被覆盖。

此外,在将 python-dev 安装到系统中时,您可以明确指定需要版本 3。

sudo apt-get install python3-dev

0
投票

我找到了解决这个问题的好方法。

通过 pip(当您的虚拟环境已获取时)安装

cmake
ninja
(如果用于构建代码)将使安装的 CMake 使用位于您环境中的正确 python 解释器。

这很简单:

python3 -m pip install cmake # Add ninja in case you require that too.

不过,不要忘记首先获取虚拟环境。这应该适用于 conda 和 venv。

© www.soinside.com 2019 - 2024. All rights reserved.