python ros导入自定义包的问题
1、创建要定义的模块
cd scripts
touch hello.py
hello.py
#! /usr/bin/env python3
def print_test():
print("---------------")
2、在功能包下创建setup.py文件
from distutils.core import setup
from catkin_pkg.python_setup import generate_distutils_setup
d = generate_distutils_setup(
packages=['py_pkg_1'],
package_dir={'': 'src'}
)
setup(**d)
- packages代表你想要安装的python包
- package_dir描述的是python包的存放路径,这个必须得写否则你的python包只能放在setup.py的同级目录
- setup(**d)其实就是调用distutils包的setup模块
3、cmakelist中添加
catkin_python_setup()
这一行是告诉catkin编译工具这里面有python的包要安装,这样catkin在编译时就会在这个功能包的根目录下自动寻找setup.py文件并执行了。
注意:catkin_python_setup()要放到下面代码之前
generate_messages(
DEPENDENCIES
std_msgs
)
4、编译
catkin_make
5、可以随便导入包了
此外还由另外一种方法:其他方式就是将路径配置在PYTHONPATH当中,或者在python文件中通过sys.path.insert等方式加入搜索路径,显然这些方法都不是最好的方法,代码需要在移植后能保证一定的健壮性。故不在这说明这两种方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现