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等方式加入搜索路径,显然这些方法都不是最好的方法,代码需要在移植后能保证一定的健壮性。故不在这说明这两种方法。

posted @   hiccup_lh  阅读(1029)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示