随手记录 CMake:Could NOT find Python3

前言

其实之前成功过 作死😂... 安装了一下gtest 然后不止为何python3.8就映射过来了,也可能不是gtest的锅,反正就是突然make不成功了,报错内容:
(missing: Python3_INCLUDE_DIRS Python3_LIBRARIES Python3_NumPy_INCLUDE_DIRS Development NumPy Development.Module Development.Embed) (found version "3.8.12")

暂且直接用test_ws 新建workspace 只有一个cmakelist进行测试:

cmake_minimum_required(VERSION 3.16)
find_package(Python3 COMPONENTS NumPy)# 

if (Python3_FOUND)
  message(STATUS "Python3_EXECUTABLE: ${Python3_EXECUTABLE}")
  message(STATUS "_Python3_EXECUTABLE: ${_Python3_EXECUTABLE}\n")
 
  message(STATUS "Python3_INCLUDE_DIR: ${Python3_INCLUDE_DIR}")
  message(STATUS "_Python3_INCLUDE_DIR: ${_Python3_INCLUDE_DIR}\n")
 
  message(STATUS "Python3_LIBRARY_DEBUG: ${Python3_LIBRARY_DEBUG}")
  message(STATUS "_Python3_LIBRARY_DEBUG: ${_Python3_LIBRARY_DEBUG}\n")
 
  message(STATUS "Python3_LIBRARY_RELEASE: ${Python3_LIBRARY_RELEASE}")
  message(STATUS "_Python3_LIBRARY_RELEASE: ${_Python3_LIBRARY_RELEASE}\n")
 
  message(STATUS "Python3_NumPy_INCLUDE_DIR: ${Python3_NumPy_INCLUDE_DIR}")
  message(STATUS "_Python3_NumPy_INCLUDE_DIR: ${_Python3_NumPy_INCLUDE_DIR}\n")
endif()

相关参考链接


  1. cmake 官方文档,有关python3

  2. Cannot import numpy in Python 3.7 or Python 3.8 - Ubuntu 18.04

  3. How to uninstall python 3.8 from Ubuntu after deleting the folder Python-3.8.0 using “rm -rf”?

  4. gtest missing方案

错误示意

相关细节性错误复制,基本全都是这个:

CMake Error at xxx/CMakeLists.txt:51 (add_library):
  Target "xxx" links to target "Python3::Python" but the target was
  not found.  Perhaps a find_package() call is missing for an IMPORTED
  target, or an ALIAS target is missing?

心路历程

都… 这么老油条了 还找了近半个小时的解法

  1. 首先想到的就是切conda,直接用环境

    然后宣告失败,切完后 有些protobuf,google相关包 路径找不到,摘取错误:

    fatal error: google/protobuf/port_def.inc: No such file or directory
    
  2. 安装numpy

    pip3 install numpy

    宣告失败,走了10分钟才发现哦吼,这个怎么找到了python 3.8.12的版本去了,而我系统的python3是链接到python3.6的所以即使这样做也不能有效

  3. set好路径

    set(Python3_INCLUDE_DIR /usr/include/python3.6)
    set(Python3_LIBRARIES /usr/lib/x86_64-linux-gnu/libpython3.6m.so)
    set(Python3_NumPy_INCLUDE_DIR /usr/lib/python3/dist-packages/numpy/core/include)
    

    失败,因为… Python3 Find那里 并不会根据set的路径找

  4. 直接卸载3.8

    一开始sudo apt remove python-3.8 还不行,非得卸干净了才行(我也不知道为啥我系统上有3.8 正常不走ros我都是conda yyds!!!)

    sudo apt-get -y purge python3.8
    sudo apt-get -y autoremove
    

    随后经过干净的卸载 emmm 然后就找到了

多说一句 记得删除build devel出来的文件夹 再catkin_make

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kin-Zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值