码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【问题解决】Linux-conda环境下安装PyKDL无法链接.so动态库


    项目场景:

    最近需要部署PyKDL库,遇见奇怪的问题,困扰了好几天,下面列出问题描述和我的解决过程

    orocos-kdl库的github的仓库地址:
    https://github.com/orocos/orocos_kinematics_dynamics


    问题描述

    之前已经在另一台电脑上按照install.md安装并测试过kdl-py库,但是今天在新电脑上部署时却出现了问题:

    ModuleNotFoundError: No module named 'PyKDL'
    
    • 1

    原因分析:

    一开始以为是conda中的环境无法链接/usr/local/lib的动态库,所以直接把动态库扔进conda中python环境下的site-packages目录下,出现如下报错:

    undefined symbol: PyFrame_GetBack
    
    • 1

    对于符号未定义的问题,通过以下方法溯源:

    nm -gDC PyKDL.so | grep Py
    
    • 1

    可以看到大部分python中的符号都没有被定义,所以,不是conda无法链接动态库,而是在使用pybind11编译C++库的时候出现了问题。

    在cmake时没有提示pybind11的报错,说明其安装没有问题,那么还是环境的问题,所以直接看pykdl中的cmakelist,注意到如下部分:

    if(DEFINED ENV{ROS_PYTHON_VERSION})
      SET(PYTHON_VERSION $ENV{ROS_PYTHON_VERSION} CACHE STRING "Python Version")
    else()
      SET(PYTHON_VERSION 3 CACHE STRING "Python Version")
    endif()
    
    • 1
    • 2
    • 3
    • 4
    • 5

    发现它的cmake是使用ROS的Python版本,而我的电脑中只有conda环境下的python,


    解决方案:

    所以在cmake的时候,我们需要指定python及其库文件的路径:

    cmake -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.8.so  \
               -DPYTHON_INCLUDE_DIR=/usr/include/python3.8 \
               -DPYTHON_EXECUTABLE=/usr/bin/python3.8     ..
    
    • 1
    • 2
    • 3

    or

    cmake -DPYTHON_LIBRARY=/home/zhou/anaconda3/lib/libpython3.9.so   \
              -DPYTHON_INCLUDE_DIR=/home/zhou/anaconda3/include/python3.9 \
                         -DPYTHON_EXECUTABLE=/home/zhou/anaconda3/bin/python3.9     ..
    
    • 1
    • 2
    • 3

    然后,把编译出来的动态库丢到envs中的site-packages里,直接import就可以使用了。

  • 相关阅读:
    黑*头条_第3章_文章详情前后端成形记
    RPA在财务预测和分析中的应用
    cp -r, 保留拷贝的文件原本的权限和属性
    Unity DOTS系列之Filter Baking Output与Prefab In Baking核心分析
    阿里低代码Low Code Engine快速上手
    Tomcat 源码分析 (Tomcat的Session管理) (十一)
    MVCC:多版本并发控制案例分析(二)
    分布式事务 —— SpringCloud Alibaba Seata
    R语言获取data.table数据中指定数据列的最小值所在的数据行(minimum)
    二十七、商城 - 搜索解决方案-Solr(15)【1】
  • 原文地址:https://blog.csdn.net/qq_43557907/article/details/127818837
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号