我在构建过程中遇到此错误
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。我该如何解决这个问题?
Cmake 在apt
文件夹中找到由
/usr
安装的python。 有两种方法可以告诉 Cmake python 的特殊位置:
在命令行上定义
PYTHON_INCLUDE_DIR
和 PYTHON_LIBRARY
变量不起作用,因为当您调用 find_package(python3)
时,这些变量会被覆盖。
此外,在将 python-dev 安装到系统中时,您可以明确指定需要版本 3。
sudo apt-get install python3-dev
我找到了解决这个问题的好方法。
通过 pip(当您的虚拟环境已获取时)安装
cmake
和 ninja
(如果用于构建代码)将使安装的 CMake 使用位于您环境中的正确 python 解释器。
这很简单:
python3 -m pip install cmake # Add ninja in case you require that too.
不过,不要忘记首先获取虚拟环境。这应该适用于 conda 和 venv。