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 @ 2022-06-13 10:35  hiccup_lh  阅读(864)  评论(0编辑  收藏  举报