ROS Melodic+Python3.9环境下tf_conversions及PyKDL编译问题求助
问题分析
编译python_orocos_kdl时出现Python版本不兼容错误,本质是CMake没有正确关联你的Anaconda Python3.9环境,而是调用了系统默认的低版本Python(比如ROS Melodic自带的Python2.7)。
解决步骤
1. 确保Anaconda环境激活
编译前先激活你的Python3.9环境:
conda activate 你的环境名
激活后确认版本与路径:
which python python --version
需确保输出为Anaconda环境下的Python路径和3.9.12版本。
2. 重新配置CMake,指定Python路径
删除python_orocos_kdl下的build文件夹,重新执行cmake并显式指定Python路径:
cd python_orocos_kdl rm -rf build mkdir build && cd build cmake .. \ -DPYTHON_EXECUTABLE=$(which python) \ -DPYTHON_INCLUDE_DIR=$(python -c "import sysconfig; print(sysconfig.get_path('include'))") \ -DPYTHON_LIBRARY=$(python -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))")/libpython${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.so
通过$(which python)直接绑定激活环境的Python,避免CMake误选其他版本。
3. 重新编译安装
配置完成后执行编译与安装:
make -j$(nproc) sudo make install
4. 验证安装结果
在激活的Anaconda环境中测试:
python -c "import PyKDL; print('PyKDL imported successfully')"
无报错则安装成功,再调用tf_conversions的函数即可正常运行。
额外注意事项
- ROS Melodic默认基于Python2.7,使用Python3环境运行ROS时,需确保所有依赖的Python包都安装在Anaconda环境内,避免版本冲突。
- 编译前务必清理旧编译缓存,防止残留配置干扰。
内容的提问来源于stack exchange,提问作者xsgldhy
相关产品推荐
相关产品推荐

